2016-11-22 95 views
1

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

的问题是,当我初始化与SVG流对象MagickImageInfo对象,我得到这个错误:

“没有解码委托这种图像格式‘’@错误/ blob.c/BlobToImage/355”

我玩过它,并能够通过这个错误,如果我反而创建一个MagickImage对象,并提供一个MagickReadSettings的实例,我明确地将格式设置为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); 

回答

0

看来,你发现缺少功能。我在这里找到了你的帖子,并为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