TIFFに書き込むための大きなスイングコンポーネントがあります。コンポーネントが大きすぎてTIFFをメモリにロードできないため、ディスクベースのWritableRaster(ここで説明)に基づく大きなBufferedImageを作成するか、JAIを使用する必要があります。
プロジェクトの完全な混乱を除けば、JAIの方が良い答えのようです。
それを考えると、誰かが私のスイングコンポーネントをメモリを使い果たすことなくタイル状のTIFFに書き込むための手順を概説できますか?
画像サイズはおそらく10000x700になります
理想的には、ある種のディスクベースのイメージを作成し、コンポーネントの一部をそのイメージに書き込みます。各書き込みはディスクにフラッシュされます。
編集
ImageWriterでこれを行うことができると思いますが、次を呼び出すとNoSuchElementExceptionが発生します。
ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("tif").next();
クラスパスにjai_code.jarとjai_core.jarjarがありますが、他に何かする必要がありますか?
編集 JAIを使用して非常に大きなTIFFを作成できますが、JAIはTIFF圧縮をサポートしていないため、ファイルは92MBです。
JAI-ImageIOをインストールすると、ImageWriterを使用して圧縮TIFFを作成できますが、メモリが不足しているRasterまたはBufferedImageからのみ作成できます。
2段階のアプローチを実行する方法はありますか?JAIを使用して大きなTIFFを作成し、すべてをメモリにロードせずに大きなTIFFを圧縮しますか?