gpt4 book ai didi

svg - 如何使用 MagickNet 从流中读取 SVG 文件

转载 作者:行者123 更新时间:2023-12-04 14:22:38 25 4
gpt4 key购买 nike

我的应用程序允许用户上传图像并将它们发送到服务,然后将其转换为另一种格式并发回。我们正在添加对 SVG 文件格式的支持,我遇到了从字节数组读取文件的问题。

问题是,当我使用 SVG Stream 对象初始化 MagickImageInfo 对象时,出现以下错误:

“此图像格式没有解码委托(delegate)''@error/blob.c/BlobToImage/355”

如果我改为创建一个 MagickImage 对象并为它提供一个 MagickReadSettings 实例,我在其中将 Format 显式设置为 SVG,我就玩弄了它,并且能够克服这个错误。

核心问题是 MagickImage 代码需要提示它是 SVG 时的文件类型。对于其他文件类型,它似乎能够推断出它是什么类型的文件。但是,虽然我能够为 MagickImage 类提供文件的格式,但 MagickImageInfo 类没有任何参数可以让我提示文件类型。

一种可能的解决方案是将文件写入磁盘,然后让 MagickImageInfo 类从磁盘读取文件,但我真的不想这样做,因为它增加了服务的复杂性并使其依赖于磁盘写访问。

相关代码:

工作代码:

var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg };
using (MagickImage image = new MagickImage(stream, readSettings))
{
image.Write("C:\test"); // Actual code doesn't write to disk
}

不工作的代码:
MagickImageInfo info = new MagickImageInfo(stream);

最佳答案

您似乎发现了一个缺失的功能。我在这里找到了你的帖子,并为 MagickImageInfo 添加了额外的重载构造函数。以下将在 Magick.NET 7.0.3.9 及更高版本中可用:

var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg };
MagickImageInfo info = new MagickImageInfo(stream, readSettings);

下次随时在这里打开一个问题: https://github.com/dlemstra/Magick.NET或在这里: https://magick.codeplex.com/discussions

关于svg - 如何使用 MagickNet 从流中读取 SVG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40746705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com