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

标签 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);
    }
}

但我只得到一张空图像。

最佳答案

使用此代码。我从 svg 网络服务绘制了一面旗帜。

  var svg = new SkiaSharp.Extended.Svg.SKSvg();
  svg.Load(msSvg);
  using (var bitMap = new SKBitmap((int)svg.CanvasSize.Width, (int)svg.CanvasSize.Height))
  using (SKCanvas canvas = new SKCanvas(bitMap))
  {
    canvas.DrawPicture(svg.Picture);
    canvas.Flush();
    canvas.Save();

    using (SKImage image = SKImage.FromBitmap(bitMap))
    {
      using (SKData data = image.Encode(SKEncodedImageFormat.Png, 80))
      {
        MemoryStream memStream = new MemoryStream(); 
        data.SaveTo(memStream);
        memStream.Seek(0, SeekOrigin.Begin);
        this._flagImage = ImageSource.FromStream(() => memStream);
      }
    }
  }

关于c# - 我可以使用 SkiaSharp 将 SVG 渲染为 PNG 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42183229/

相关文章:

javascript - 识别点(x,y)在 svg 路径内部或外部

css - SVG颜色没有改变

wpf - 直接在 WPF 中绘制快速图形,而不是使用 CompositionTarget.Rendering

c# - 如何使用 SkiaSharp.Views.UWP?

c# - Quartz.NET 配置 - 不与数据库交互

c# - 如何使用 C# 查找 PDF 文件是否有重叠文本

c# - C# 中的多态性是否如此多态?

svg - Graphviz,无法识别 gvpr

c# - Oracle:算术运算导致溢出

xamarin - 为什么 SkiaSharp Touch SKTouchAction.Moved 事件不起作用?