我有以下内容:
- 标题(文字)
- 标语(文字)
- 背景图片(此图片的网址)
我需要将这些动态设置在图像中,然后将其存储为 PNG 文件。所有这些都发生在发送某种流的 Web 服务中。
我希望能够使用 CSS 设置样式,因为在图片中添加一些 CSS 效果会很好。如果那是不可能的,那也很好。
到目前为止,我已经考虑过使用Bitmap
该类,然后动态插入我的东西。这绝对是一种方法,但我真的更喜欢像 CSS 这样的设计更友好的方式。
这样做的首选方法是什么?有什么经验吗?
Bitmap bmp = new Bitmap(500, 500);
using (Graphics g = Graphics.FromImage(bmp)) {
g.Clear(Color.Black);
// ...
}
然后,您可以调用Image.Save
( bmp.Save(...)
) 将图像保存到磁盘,甚至保存到MemoryStream
.
Angelo Geels 的回答将让您在代码中创建动态位图。如果您需要更大的灵活性,那么您可能希望使用 SVG 格式,如果您绝对需要该格式,则可能将其呈现为 PNG 文件。
SVG 是一种基于 XML 的图像格式,您可以在其中定义应在其中绘制的视口和形状。它是基于矢量的,因此图像可以放大和缩小到任何大小。
编写一个 ASP.Net Http Handler 应该很容易,它根据用户输入输出一个带有一些动态内容的 SVG xml 文件。一个更简单的选择是提供您的设计师创建的静态 SVG 文件,但您也可以提供静态 PNG 文件。
如果您想使用 SVG 方法的灵活性但仍需要输出 PNG,那么您可以使用SVG.Net 库来读取 SVG 文件,然后使用 SvgDocument.Draw 方法将图像绘制到 Bitmap 对象,然后可以被写成PNG文件。