首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MagickNet从数据流中读取SVG文件

如何用MagickNet从数据流中读取SVG文件
EN

Stack Overflow用户
提问于 2016-11-23 00:15:42
回答 1查看 904关注 0票数 4

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

问题是,当我用SVG Stream对象初始化一个MagickImageInfo对象时,我得到了这个错误:

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

我使用了它,如果我创建一个MagickImage对象并为它提供一个MagickReadSettings的实例,并且显式地将格式设置为SVG,就能够克服这个错误。

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

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

相关代码:

工作代码:

代码语言:javascript
复制
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
}

不起作用的代码:

代码语言:javascript
复制
MagickImageInfo info = new MagickImageInfo(stream);
EN

回答 1

Stack Overflow用户

发布于 2016-11-28 02:22:03

看起来你找到了一个缺失的功能。我在这里找到了你的帖子,并为MagickImageInfo构造函数添加了额外的重载。以下内容将在Magick.NET 7.0.3.9及更高版本中提供:

代码语言:javascript
复制
var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg };
MagickImageInfo info = new MagickImageInfo(stream, readSettings);

下次请随时在此处:https://github.com/dlemstra/Magick.NET或此处:https://magick.codeplex.com/discussions打开问题

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40746705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档