0

我有以下内容:

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

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

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

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

这样做的首选方法是什么?有什么经验吗?

4

2 回答 2

2

退房System.Drawing.Graphics

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

然后,您可以调用Image.Save( bmp.Save(...)) 将图像保存到磁盘,甚至保存到MemoryStream.

于 2013-08-05T11:46:59.927 回答
1

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

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

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

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

于 2013-08-05T12:12:32.387 回答