gpt4 book ai didi

c# - 如何在 .net 核心上从 SVG 生成 System.Drawing.Image?

转载 作者:行者123 更新时间:2023-11-30 14:45:25 30 4
gpt4 key购买 nike

我发现许多库可以读取 SVG 并将其转换为 C# 框架中的 System.Drawing.Image 或 png,但我找不到任何方法在 .net 核心中执行此操作。

如果我使用 Image.FromFile,我会得到一个 OutOfMemoryException(可能是因为 SVG 不是光栅化格式)。

关于如何使用 Image 读取 SVG 或在 .net core 中运行的任何开源库的任何提示?

最佳答案

  1. Skiasharp Xamarin 团队似乎是一个不错的选择。 learn.microsoft.com上已经有API文档了.有关更多详细信息,请参阅 Mono/SkiaSharpMono/mono/SkiaSharp.Extended

  2. 您可以在 nuget 上安装官方 svg 扩展通过 dotnet 添加包 SkiaSharp.Svg:

    <PackageReference Include="SkiaSharp.Svg" Version="1.60.0" />
  3. 演示:

        var svgSrc=Path.Combine(Directory.GetCurrentDirectory(),"img.svg");
    string svgSaveAs = "xyz.png";
    var quality = 100;

    var svg = new SkiaSharp.Extended.Svg.SKSvg();
    var pict = svg.Load(svgSrc);
    var dimen = new SkiaSharp.SKSizeI(
    (int) Math.Ceiling(pict.CullRect.Width),
    (int) Math.Ceiling(pict.CullRect.Height)
    );
    var matrix = SKMatrix.MakeScale(1,1);
    var img = SKImage.FromPicture(pict,dimen,matrix);

    // convert to PNG
    var skdata = img.Encode(SkiaSharp.SKEncodedImageFormat.Png,quality);
    using(var stream = File.OpenWrite(svgSaveAs)){
    skdata.SaveTo(stream);
    }

截图:

enter image description here

关于c# - 如何在 .net 核心上从 SVG 生成 System.Drawing.Image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854432/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com