2016-11-22 11 views
1

私のアプリケーションでは、画像をアップロードしてサービスに送信し、サービスに別の形式に変換して返信することができます。私たちはSVGファイル形式のサポートを追加しています。バイト配列からファイルを読み込む際に問題が発生しています。MagickNetでストリームからSVGファイルを読み取る方法

問題は、私はSVG StreamオブジェクトとMagickImageInfoオブジェクトを初期化するとき、私はこのエラーを取得することです:

「この画像形式 『』 @エラー/ blob.c/BlobToImage/355用がないのデコードデリゲート」

代わりにMagickImageオブジェクトを作成し、MagickReadSettingsのインスタンスをSVGに明示的に設定すると、このエラーを回避できました。

MagickImageコードは、SVGのときにどのような種類のファイルであるかについてのヒントが必要であるというコア問題があります。他の種類のファイルについては、どのような種類のファイルであるかを推測できるようです。しかし、私はMagickImageクラスにファイルの形式を指定することができますが、MagickImageInfoクラスには、ファイルの種類をヒントするためのパラメータはありません。

可能な解決策の1つは、ファイルをディスクに書き込んだり、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で利用可能と高くなります:https://github.com/dlemstra/Magick.NETかここに:https://magick.codeplex.com/discussions

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

を発行し、ここで、次回を開く気軽に

関連する問題