我已经尝试了很多事情,但似乎无论如何,我都无法成功将SVG转换为PNG
我的情况如下
- 将URL的SVG文件加载到
ContentStream
- 使用'SVG'Nuget包将其转换为PNG
- 将PNG保存到
MemoryStream
- 将其从
MemoryStream
上载到Azure
我的代码如下所示(大部分情况下非常简单)
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.Getasync("https://myweburl/foo.svg");
if (response.IsSuccessStatusCode)
{
HttpContent content = response.Content;
var contentStream = await content.ReadAsStreamAsync();
var SVG_FILE = SvgDocument.Open<SvgDocument>(contentStream);
SVG_FILE.ShapeRendering = SvgShapeRendering.Auto;
var bitmap = SVG_FILE.Draw(200,200);
using (var MS = new MemoryStream())
{
bitmap.Save(MS,ImageFormat.Png);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference("foo.png");
MS.Seek(0,SeekOrigin.Begin);
await blob.UploadFromStreamAsync(MS);
return blob.Name;
}
}
else
{
throw new FileNotFoundException();
}
}
我可以确认SVG的STREAM很好,但是当我将其转换为PNG时,它最终会变成所有盒子,等等
SVG
PNG
我在var bitmap = SVG_FILE.Draw(200,200);
中尝试了不同的设置,例如增加高度和宽度并更新SvgShapeRendering
设置,但结果相同。
有人知道为什么我无法使用bitmap.Save
正确渲染PNG吗?