ホームページ >Java >&#&チュートリアル >Java で ImageIO を使用して JPEG 圧縮レベルを制御する方法

Java で ImageIO を使用して JPEG 圧縮レベルを制御する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 04:28:30452ブラウズ

How to Control JPEG Compression Level Using ImageIO in Java?

Java で ImageIO を使用して JPEG 圧縮レベルを設定する

Java では、ImageIO は画像操作用の多用途ライブラリです。ただし、画像を書き込むときに JPEG 圧縮レベルを設定する明示的な方法がありません。この記事では、ImageIO API を使用して圧縮品質を調整する方法を説明することで、この制限に対処します。

解決策

JPEG 圧縮を制御する 1 つの方法は、ImageWriteParam クラスを利用することです。次の手順はプロセスの概要です:

  1. JPEG 形式の ImageWriter オブジェクトを取得します。
  2. ImageWriter のデフォルトの ImageWriteParam を取得します。
  3. 圧縮モードを次のように設定します。 ImageWriteParam.MODE_EXPLICIT.
  4. 必要な圧縮品質を 0.0f (最大圧縮) と 1.0f (最大品質) の間で指定します。
  5. 出力を処理する ImageOutputStream を作成します。
  6. ImageWriter 出力を ImageOutputStream に設定します。
  7. 画像データを使用して IIOImage オブジェクトを作成します。
  8. カスタム ImageWriteParam を使用して IIOImage を ImageOutputStream に書き込みます。
  9. ImageWriter を破棄します.

コード例:

<code class="java">ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(0.7f);

ImageOutputStream outputStream = new FileImageOutputStream(new File("output.jpg"));
jpgWriter.setOutput(outputStream);
IIOImage outputImage = new IIOImage(image, null, null);
jpgWriter.write(null, outputImage, jpgWriteParam);
jpgWriter.dispose();</code>

このコード スニペットは、圧縮品質を明示的に 0.7 に設定し、品質とファイル サイズのバランスが取れた画像を生成します。 .

注:

この例では、出力を書き込むためのイメージ変数と File オブジェクトが存在することを前提としています。さらに、MemoryCacheImageOutputStream クラスは、メモリ バッファに書き込むときに FileImageOutputStream の代わりになります。

以上がJava で ImageIO を使用して JPEG 圧縮レベルを制御する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。