C# SkiaSharp将SVG转换为PNG会破坏图像

C# SkiaSharp将SVG转换为PNG会破坏图像,c#,asp.net-mvc,skiasharp,C#,Asp.net Mvc,Skiasharp,在我的方法将SVG代码转换为PNG后,它会在正方形内部画线。最初它们只是正方形的边界 private void svgToPng(int itemId) { // Load created svg file XmlDocument doc = new XmlDocument(); doc.Load("...\\lastCreated.svg"); XmlReader svgSrc = new XmlNodeReader(doc); string svg

在我的方法将SVG代码转换为PNG后,它会在正方形内部画线。最初它们只是正方形的边界

private void svgToPng(int itemId)
{
    // Load created svg file
    XmlDocument doc = new XmlDocument();
    doc.Load("...\\lastCreated.svg");

    XmlReader svgSrc = new XmlNodeReader(doc);

    string svgSaveAs = "...\\lastCreated.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 = System.IO.File.OpenWrite(svgSaveAs))
    {
         skdata.SaveTo(stream);
    }

    // Upload image
    uploadImage("...\\lastCreated.png", itemId);
}
这是照片

好:

坏:

最好的方法是通过进程使用Inkscape。甚至不要尝试使用库,它们都有bug。

我会去看看

这个库要完整得多,并且支持大多数SVG规范。

我想看看


此库更加完整,支持大多数SVG规范。

您的第二个链接已断开请确保您共享的所有链接都已断开working@Kevin请现在再试。@kakabali请再试一次-1,因为您还没有完成诊断错误的工作。本期的标题包括“PNG”,但您尚未确定PNG压缩(更不用说创建位图图像)是否是问题所在。问题很可能会影响所有渲染,无论是文件渲染还是屏幕渲染,在发布之前您尚未排除这一点。您的第二个链接已断开请确保您共享的所有链接均已断开working@Kevin请现在再试。@kakabali请再试一次-1,因为您还没有完成诊断错误的工作。本期的标题包括“PNG”,但您尚未确定PNG压缩(更不用说创建位图图像)是否是问题所在。最有可能的是,这个问题会影响所有的渲染,无论是对文件还是在屏幕上,在发布之前,您还没有排除这一点。