当我的方法将SVG代码转换成PNG后,它在正方形内画线。最初它们只是方形的边界线。
private void svgToPng(int itemId)
{
// Load created svg file
XmlDocument doc = new XmlDocument();
doc.Load("...\\lastCreated.svg");
XmlReader svgSrc = new XmlNodeReader(doc);
string svgSaveAs = "...\\lastCreated.png";
var quality = 100;
var svg = new SkiaSharp.Extended.Svg.SKSvg();
var pict = svg.Load(svgSrc);
var dimen = new SkiaSharp.SKSizeI
(
(int) Math.Ceiling(pict.CullRect.Width),
(int) Math.Ceiling(pict.CullRect.Height)
);
var matrix = SKMatrix.MakeScale(1, 1);
var img = SKImage.FromPicture(pict, dimen, matrix);
// Convert to PNG
var skdata = img.Encode(SkiaSharp.SKEncodedImageFormat.Png, quality);
using(var stream = System.IO.File.OpenWrite(svgSaveAs))
{
skdata.SaveTo(stream);
}
// Upload image
uploadImage("...\\lastCreated.png", itemId);
}这是照片
Good:

Bad:

最好的方法是通过进程使用Inkscape。甚至不要尝试使用库,它们都有bug。
发布于 2020-07-01 05:18:38
我会去看看https://github.com/wieslawsoltes/Svg.Skia
这个库要完整得多,并且支持大多数SVG规范。
https://stackoverflow.com/questions/56558040
复制相似问题