我尝试通过SkiaSharp.Extended.Svg-1.60.0(netcoreapp2.0)将以下svg图像转换为png。 但the created png file中有一些噪音。
请告诉我如何摆脱它们。
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
,代码在这里
// using SkiaSharp;
// using SkiaSharp.Extended;
// using SkiaSharp.Extended.Svg;
string fromfile = "circle.svg";
string tofile = "circle.png";
SKEncodedImageFormat toencoding = SKEncodedImageFormat.Png;
var svg = new SkiaSharp.Extended.Svg.SKSvg();
using (var pic = svg.Load(fromfile))
{
Console.WriteLine($"{pic.CullRect.Width},{pic.CullRect.Height}");
using (var bmp = new SKBitmap((int)svg.Picture.CullRect.Width, (int)svg.Picture.CullRect.Height))
{
using (var canvas = new SKCanvas(bmp))
using (var paint = new SKPaint())
{
canvas.DrawPicture(svg.Picture);
canvas.Flush();
canvas.Save();
using (var img = SKImage.FromBitmap(bmp))
using (var data = img.Encode(toencoding, 100))
{
using (var stm = data.AsStream())
using (var ostm = File.Create(tofile))
{
stm.CopyTo(ostm);
}
}
}
}
}
答案 0 :(得分:0)
这。这是因为您没有先清除画布。只需在创建画布后添加:
canvas.Clear(SKColors.Transparent);
与其他一些自动清除像素的库不同,skia和SkiaSharp不会。这有两个主要原因: