C# SkiaSharp将SVG转换为PNG会破坏图像
在我的方法将SVG代码转换为PNG后,它会在正方形内部画线。最初它们只是正方形的边界C# SkiaSharp将SVG转换为PNG会破坏图像,c#,asp.net-mvc,skiasharp,C#,Asp.net Mvc,Skiasharp,在我的方法将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 svg
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);
}
这是照片
好:
坏:
最好的方法是通过进程使用Inkscape。甚至不要尝试使用库,它们都有bug。我会去看看
这个库要完整得多,并且支持大多数SVG规范。我想看看
此库更加完整,支持大多数SVG规范。您的第二个链接已断开请确保您共享的所有链接都已断开working@Kevin请现在再试。@kakabali请再试一次-1,因为您还没有完成诊断错误的工作。本期的标题包括“PNG”,但您尚未确定PNG压缩(更不用说创建位图图像)是否是问题所在。问题很可能会影响所有渲染,无论是文件渲染还是屏幕渲染,在发布之前您尚未排除这一点。您的第二个链接已断开请确保您共享的所有链接均已断开working@Kevin请现在再试。@kakabali请再试一次-1,因为您还没有完成诊断错误的工作。本期的标题包括“PNG”,但您尚未确定PNG压缩(更不用说创建位图图像)是否是问题所在。最有可能的是,这个问题会影响所有的渲染,无论是对文件还是在屏幕上,在发布之前,您还没有排除这一点。