C# .svg file to System.Drawing.Image

本文关键字:Drawing Image System to svg file | 更新日期: 2023-09-27 18:35:26

我需要将选定的.svg文件转换为System.Drawing.Image对象,以便我可以调整其大小并将其另存为.png。谁能帮我解决这个问题?

这是我到目前为止所拥有的:

Svg.SvgDocument svgDocument = SVGParser.GetSvgDocument(mPath);
image = svgDocument.Draw();

但它给了我内存不足错误。

C# .svg file to System.Drawing.Image

您可以使用 SVG 渲染引擎库:

Install-Package Svg

使用它很容易绘制图像:

var svgDoc = SvgDocument.Open(imagePath);
using(var Image = new Bitmap(svgDoc.Draw()))
{
    Image.Save(context.Response.OutputStream, ImageFormat.Png);
    context.Response.ContentType = "image/png";
    context.Response.Cache.SetCacheability(HttpCacheability.Public);
    context.Response.Cache.SetExpires(DateTime.Now.AddMonths(1));
}

在此示例中,我使用处理程序在浏览器上显示图像,但只需更改 Save 方法的第一个参数即可轻松地将其保存在某个文件夹中。

Miljan Vulovic 使用的资源是 svg (https://archive.codeplex.com/?p=svg)。

链接仅在 2021 年 7 月之前有效,届时可能会在 GitHub 上提供,但我不确定。

无论如何,他的解决方案对我有用。

所以,

SVGParser.MaximumSize = new System.Drawing.Size(4000, 4000);
svgDocument = SVGParser.GetSvgDocument(mPath);
var bitmap = svgDocument.Draw();
image = bitmap;