私は、プロジェクトを作業中です。スターカタログを視覚化し、印刷可能なbmpファイルを作成します。 1200 dpiの解像度で24 x 24の画像を印刷したい場合は、28800 * 28800、およそ2.32 Gbになります。どのようにJavaで巨大なbmpファイルを保存するには?
一般に、bmpファイルを作成するときは、BufferedImageを作成し、のメソッドをsetRGBメソッドでグラフ化し、ImageIOでbmpファイルとして保存します。 書き込み。
しかし、自分のプログラムを配布しようとすると、エンドユーザーは空きRAMが足りない可能性があり、OutOfMemoryErrorが発生します。
イメージのすべてのピクセルをRAMに保存しないようにする方法はありますか?画像を水平にいくつかのバンドにカットし、1つ1つのbmpファイルに1つずつ保存すると、保存されたバッファーに乗ることができるのですばらしいことになります。同様の
何かが次のようになります。
私はImageIOにし、AWTパッケージを見つける前に、私はcsvファイルとしてビットマップを保存しBitmapクラスを書いて、それをレンダリングする外部ソフトウェアを使用しています。それはtoStringメソッドを持っていて、実際にディスクに保存する代わりに、このメソッドを使用してcsvの内容を文字列として保存します。大きなイメージを作成したいときは、fileWriterとprintWriterを作成します。イメージの水平バンドをバッファリングし、printWriterでディスクに書き込みます。次に、次のバンドをバッファリングして古いバンドを置き換え、再度printWriterで書きます。それが終了すると、私は作家を閉じて、ディスク上のcsvファイルとして完全なビットマップを持っています。