我可以使用 SkiaSharp 将 SVG 渲染为 PNG 吗?

t9m*_*ike 5 c# svg skiasharp

我正在尝试使用 SkiaSharp 将 SVG 文件转换为 PNG。我知道有很多选择,但我想评估它的 SVG 负载支持。

这可能吗?我试过这个:

var svg = new SKSvg(new SKSize(200, 200));
svg.Load("image.svg");

var bitmap = new SKBitmap((int)svg.CanvasSize.Width, (int)svg.CanvasSize.Height);
var canvas = new SKCanvas(bitmap);
canvas.DrawPicture(svg.Picture);
canvas.Flush();
canvas.Save();

using (var image = SKImage.FromBitmap(bitmap))
using (var data = image.Encode(SKImageEncodeFormat.Png, 80))
{
    // save the data to a stream
    using (var stream = File.OpenWrite("image.png"))
    {
        data.SaveTo(stream);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我只是得到一个空图像。

t9m*_*ike 1

是的,它可以。上面的代码适用于 SkiaSharp 附带的测试 SVG。https://github.com/mono/SkiaSharp/blob/8ca298b448810cf65ab13cd7b2de94c627a033c1/tests/Content/images/logos.svg

我的 SVG 可能不受支持。如果我想进一步调查,我会发布不同的问题。