SVG转换为PNG-始终损坏

我已经尝试了很多事情,但似乎无论如何,我都无法成功将SVG转换为PNG

我的情况如下

  1. 将URL的SVG文件加载到ContentStream
  2. 使用'SVG'Nuget包将其转换为PNG
  3. 将PNG保存到MemoryStream
  4. 将其从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

SVG转换为PNG-始终损坏

PNG

SVG转换为PNG-始终损坏

我在var bitmap = SVG_FILE.Draw(200,200);中尝试了不同的设置,例如增加高度和宽度并更新SvgShapeRendering设置,但结果相同。

有人知道为什么我无法使用bitmap.Save正确渲染PNG吗?

wbx520czh 回答:SVG转换为PNG-始终损坏

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3058532.html

大家都在问