0

tif ファイルを処理するサービスを作成しました。プロセスの一部は、複数ページの tif を単一ページに分割することです。

次の行でメモリ不足エラーが発生します。

System.Drawing.Image tiffImage = System.Drawing.Image.FromFile(path);

サービスは、十分に活用されておらず、使用可能なメモリが大量にあるサーバーで実行されています。

私はいくつかの調査を行い、tifが正しくない場合にエラーが発生する可能性があると人々は言います(pixal形式と関係があります)。ただし、同じ tif ファイルを使用してデスクトップ (デバッグ) でコードを実行すると、問題なく分割されます。

次のコードを使用してメモリ使用量を見つけると:

Process proc = Process.GetCurrentProcess(); 

メッセージ:-「メモリ使用量」+ proc.PrivateMemorySize64

I get the following results :  
12mb - server  
27mb - desktop

これは、サーバー上のサービスに割り当てられたメモリが少ないということですか? それとも、サーバー上のサービスがより少ないメモリを使用していることを意味しますか?

どんな助けでも素晴らしいだろうありがとうマーティン

4

2 に答える 2

0

System.Drawingはgdiplus.dllによって実装されています。異なるバージョンが2台のマシンで実行されている可能性があります。

System.Windows.Media.ImagingでWPFイメージングAPIに切り替えてみてください。

于 2012-10-02T11:28:41.453 に答える
0

イメージングに Microsoft を使用しないようにしてください。サービスが tiff ファイルを分割するだけの場合は、相互運用呼び出しまたはコマンド ラインで libtiff を使用することをお勧めします。

MS およびその他の多くのグラフィック ツールキットは、イメージをロードしようとします。libtiff を使用すると、ロードする必要がなく、分割する前にヘッダーを検査できます。

欠点は、使いにくいことです。

ところで: 2003 年に、ICR エンジンのパフォーマンス テストのために、Intel C++ Compiler を使用して libtiff をコンパイルしました。A3、400 dpi 24 ビット カラー tiff ファイルをロードし、単純なしきい値アルゴリズムを使用して白黒に変換しました。1 GB のメモリを搭載した 1300 Mhz Intel Xeon CPU では、すべて 200 ~ ミリ秒かかりました。これはあなたにいくつかの数字を与えるかもしれません

于 2012-10-02T12:59:33.190 に答える