动态创建带有一些文本和背景图像的图片作为PNG

时间:2013-08-05 11:44:30

标签: c# asp.net .net-4.0 png

我有以下内容:

  • 标题(文字)
  • 标语(文字)
  • 背景图片(此图片的网址)

我需要在图像中动态设置这些,然后将其存储为PNG文件。所有这些都发生在一个Web服务中,它会发回某种流。

我希望能够用CSS设计这个样式,因为在图片中添加一些CSS效果会很不错。如果那是不可能的,那也很好。

到目前为止,我已经考虑过使用Bitmap类,然后动态插入我的东西。这绝对是一种方法,但我真的更喜欢一些像CSS这样设计友好的方式。

首选方法是什么?有经验吗?

2 个答案:

答案 0 :(得分:2)

查看System.Drawing.Graphics

Bitmap bmp = new Bitmap(500, 500);
using (Graphics g = Graphics.FromImage(bmp)) {
  g.Clear(Color.Black);
  // ...
}

然后,您可以致电Image.Savebmp.Save(...))将图片保存到磁盘,甚至是MemoryStream

答案 1 :(得分:1)

Angelo Geels的答案将让您在代码中创建动态位​​图。如果您需要更多的灵活性,那么您可能希望使用SVG格式,如果您绝对需要该格式,可能会将其呈现为PNG文件。

SVG是一种基于XML的图像格式,您可以在其中定义应该绘制到其中的视口和形状。它是基于矢量的,因此图像可以按比例放大和缩小到任何大小。

编写一个ASP.Net Http Handler应该很容易,它根据用户输入输出一些带有一些动态内容的SVG xml文件。更简单的选择是提供设计人员创建的静态SVG文件,但是您也可以提供静态PNG文件。

如果你想使用SVG方法的灵活性,但仍然需要输出PNG,那么你可以使用SVG.Net library读取SVG文件,然后使用SvgDocument.Draw方法将图像绘制到位图然后可以将其写为PNG文件的对象。