SkiaSharp конвертирует SVG в PNG портит изображение - PullRequest
2 голосов
/ 12 июня 2019

После того, как мой метод конвертирует код 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);
}

Вот изображения

Хорошо:

Good

Плохо:

enter image description here

Лучший способ - использовать Inkscape через Process.Даже не пытайтесь использовать библиотеки, все они имеют ошибки.

...