0

如何使用 SkiaSharp 从 SVG 渲染 Jpeg?SVG 包括一个 Jpeg。当我在浏览器中打开文件时,图像会显示,但 SkiaSharp 生成的 Jpeg 排除了我想要包含的 Jpg。SVG 的其余部分渲染得很好。

这是 SVG:

<svg width="580" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g>
  <g id="svg_3">
   <image width="225" height="100" xlink:href="https://wallpapercave.com/wp/MnyjX3S.jpg" transform="matrix(2.54667, 0, 0, 2.57, 402.947, 108.409)" id="svg_53402_5" y="-14.5428" x="-155.85733"/>
  </g>
 </g>
</svg>

用于渲染 jpg 的代码如下所示:

    public static byte[] Svg2Jpg(MemoryStream svgReader)
    {
        var output = new MemoryStream();
        var svg = new SKSvg(new SKSize(1000, 1000));

        try
        {
            svgReader.Seek(0, SeekOrigin.Begin);
            svg.Load(svgReader);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

        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(SKEncodedImageFormat.Jpeg, 80))
        {
            data.SaveTo(output);
        }
        return output.ToArray();
    }
4

0 回答 0