如何使用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();
}