2

(メモリを解放するために) BufferedImage をディスクに保存する最速の方法は何ですか?

私の Java アプリケーションは大量の画像を処理します (画像は 300 ミリ秒ごとにメモリに読み込まれます)。これらの画像のほとんどはすぐに破棄 (gc) されますが、ときどき画像を保存する必要があります。

もちろん、それらを RAM に保持するのは得策ではありません。数分で平均 2 GB の JVM を消費し、アプリケーションをクラッシュさせるため、ディスクに保存してみました。問題は、ImageIO.write(img, "PNG", file)(私の i7 マシンでは) 12MB の画像を処理して保存するのに 5 ~ 10 秒かかることがあり、メモリを十分に解放しないため、保存するだけでは不十分です。

より高速に実行できる別の形式はありますか?

編集:

解像度を下げたり、妥当なレベルで画像データを失ったりすることは気にしません。

4

1 に答える 1

5

PNG は ImageIO で遅いことで有名です。基礎となるリーダーとライターを取得してみてください。たぶん、高品質の代わりに JPEG を書きます。代替案

入力ファイルを最初に File として保存できないので、ImageIO で書き込む必要はありません。

完全を期すために: をBufferedImage.getGraphics()忘れないでくださいdispose()

于 2013-08-01T11:27:16.743 に答える