1

多くの画像をバイト[]としてデータベースに保存するシステムに取り組んでいます。各 byte[] はすでに複数ページの tiff ですが、画像を取得して、すべてを 1 つの複数ページの tiff に変換する必要があります。システムは以前、Save と SaveAdd を使用して System.Drawing.Image クラスを使用していました。これは、ファイルを段階的に保存するという点で優れていたため、メモリの使用量は最小限に抑えられましたが、GDI+ の同時実行の問題が発生しました。これはバックエンドで実行されています。 COM+ で。

メソッドは、System.Windows.Media.Imaging クラスの TiffBitmapDecoder と TiffBitmapEncoder を使用するように変換され、その間に少し操作が加えられました。これにより同時実行の問題は解決しましたが、メモリ使用量を制限するために画像を段階的に (フレームごとに) 保存する方法を見つけるのに苦労しているため、操作できる画像のサイズははるかに小さくなります (つまり、テスト 1.2 を作成しました)。 GDI+ クラスを使用して GB イメージを作成し、続行することもできましたが、他の方法では最大 600MB のファイルしか作成できませんでした)。

メモリの問題を回避するために複数ページの tiff イメージを段階的に保存する方法はありますか? Save が TiffBitmapEncoder で複数回呼び出されると、エラーがスローされます。

4

2 に答える 2

1

私はLibTIFF.NETを介してこれを実行しましたが、この方法で数ギガバイトの画像を問題なく処理できます。で私の質問を参照してください

c#のLibTIFFを使用してタイル状のtiff画像にアクセスする

タイルアクセスに使用していますが、メモリの問題も同様です。LibTIFFは、すべてのTIFF関数へのフルアクセスを許可するため、ファイルをディレクトリのように読み取って保存できます。

注目に値するもう1つの点は、異なるWindowsバージョンのGDIの違いです。GDI.NETの例外を参照してください。

于 2010-02-04T14:02:26.410 に答える