代码之家  ›  专栏  ›  技术社区  ›  Mohammad

将SVG数据转换为图像[重复]

  •  0
  • Mohammad  · 技术社区  · 7 年前

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

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

    我需要能够做的是从磁盘加载SVG文件,并理想地将其转换为我可以使用系统的东西。要操作的绘图类。

    有什么想法吗?

    0 回复  |  直到 15 年前
        1
  •  6
  •   Daniel    9 年前

    好我将与大家分享我的解决方案,以呈现一个大小适当的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);
        }
    }
    

    享受

        2
  •  4
  •   keyboardP    15 年前

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

        3
  •  3
  •   user7450900 user7450900    9 年前

    您只需安装SVG渲染库nuget包。

    Install-Package Svg
    

    然后

            //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);
    

    就这样。