4

私はJavaでたくさんの画像を生成し、次のImageIO.writeような方法でそれらを保存しています:

final BufferedImage img = createSomeImage();
ImageIO.write( img, "png", new File( "/some/file.png" );

Google の Firefox アドオン 'Page Speed' が、画像を最適化すると最大 60% のサイズを節約できると言うまでは、結果に満足していました。画像は QR コードで、それぞれのサイズは約 900B で、firefox プラグインに最適化されたバージョンは約 300B です。このような最適化された 300B の画像を Java から直接保存したいと考えています。

ここでもう一度質問します。最適化された png 画像を Java の ImageIO で保存するにはどうすればよいですか?

4

1 に答える 1

4

PngEncoderBを使用して、BufferedImageをPNGエンコードされたバイト配列に変換します。

フィルタを適用すると、最適化のために画像を準備するのに役立ちます。これはOptiPNGが行うことであり、OptiPNGのみがどのフィルターが最適な圧縮を取得するかを計算します。

各フィルターを適用して、どのフィルターが一貫して優れているかを確認する必要がある場合があります。2ビットカラーの場合、役立つ可能性のあるフィルターは「アップ」だけだと思う​​ので、それを使用すると思います。

画像をPNGでエンコードされたバイト配列に取得したら、それをファイルに直接書き込むことができます。

于 2010-04-21T17:45:17.360 に答える