【问题标题】:Convert SVG to PNG or JPEG将 SVG 转换为 PNG 或 JPEG
【发布时间】:2011-09-09 09:52:40
【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

  • imagemagick.codeplex.com 可能有用。
  • 你解决了你的问题吗?你会和我们一起玩吗?
  • 不,从来没有。我们放弃了这种方法。
  • 我还在寻找将 Inkscape 创建的 SVG 转换为 Png 或 Jpeg 的方法。目前我正在使用这里列出的方法stackoverflow.com/questions/58910/… 专门使用 DLL 和 pinvokes 用于随 Gimp 提供的库。

标签: c# image svg


【解决方案1】:

嗯。我将分享我的解决方案,将 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】:

    您可以查看 CodePlex 上的 SVG Rendering Engine。它有一个重载,将采用内存中的流(您的 SVG),然后可以将其用于convert to an image

    【讨论】:

    • 谢谢,我正在尝试使用你的建议,但我收到错误Object reference not set to an instance of an object 你能help plz
    • 我在调用 Draw() 方法时也收到“对象引用未设置为对象的实例”错误。
    • @FrankHale - astrocybernaute 链接中的解决方案对您有用吗?
    • SVG 渲染引擎代码对我不起作用。尝试调用 Draw() 时出现对象引用错误。我目前正在使用一种方法,其中包含一些来自随 Gimp 安装的库的 pinvokes。
    • 我知道我的 SVG 格式正确。我在渲染它或使用 The Gimp 的库时没有问题。我不知道 SVG 渲染引擎方法是怎么回事。
    【解决方案3】:

    您需要做的就是安装 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);
    

    就是这样。

    【讨论】:

    • 在循环中使用时,会在第一个文件之后产生垃圾
    猜你喜欢
    • 2018-12-29
    • 2012-02-17
    • 2022-08-22
    • 2011-01-18
    • 2015-11-14
    • 2011-04-30
    • 2019-10-17
    • 2012-04-09
    • 2015-07-29
    相关资源
    最近更新 更多