动态创建一张图片,其中包含一些文本和PNG背景图像



我有以下内容:

  • 标题(文本)
  • 标语(文字)
  • 背景图像(此图像的url)

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

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

到目前为止,我已经考虑过使用Bitmap类,然后动态插入我的东西。这无疑是一条路要走,但我真的更喜欢一些更友好的设计方式,比如CSS。

最好的方法是什么?有什么经验吗

查看System.Drawing.Graphics

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

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

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

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

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

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

相关内容

最新更新