将SVG转换为PNG或JPEG

时间:2011-06-06 15:35:09

标签: c# image svg

目前有哪些方法可以使用C#以编程方式将SVG图像转换为PNG或JPEG?

我已阅读有关此主题的所有现有SO问题,所有这些问题都涉及使用外部流程启动第三方程序。就我而言,这不是一个选项,因为我们很快就会迁移到Azure。

我需要做的是从磁盘加载SVG文件,理想情况下将其转换为我可以使用System.Drawing类来操作的东西。

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

好。我将与我的解决方案分享,以将SVG文件重新调整为适当的大小。

我安装了这个nuget包

Install-Package Svg

您可以在github here

上找到软件包源代码

然后,你可以这样做:

var svgDocument = SvgDocument.Open(path);
using (var smallBitmap = svgDocument.Draw())
{
    var width = smallBitmap.Width;
    var height = smallBitmap.Height;
    if (width != 2000)// I resize my bitmap
    {
        width = 2000;
        height = 2000/smallBitmap.Width*height;
    }

    using (var bitmap = svgDocument.Draw(width, height))//I render again
    {
        bitmap.Save(pngPath, ImageFormat.Png);
    }
}

享受!

答案 1 :(得分:4)

您可以在CodePlex上查看SVG Rendering Engine。它有一个重载,它会占用内存流(你的SVG),然后可以用来convert to an image

答案 2 :(得分:2)

您需要做的就是安装SVG渲染库nuget包。

        //read svg document from file system
        var svgDocument = SvgDocument.Open("test.svg");
        var bitmap = svgDocument.Draw();
        //save converted svg to file system
        bitmap.Save("test.png", ImageFormat.Png);

然后

react-router

就是这样。