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

Java で ImageIO を使用して画像を保存するときに JPEG 圧縮レベルを制御する方法

DDD
DDDオリジナル
2024-10-24 21:56:02367ブラウズ

How to Control JPEG Compression Level When Saving Images Using ImageIO in Java?

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

Java API for Image I/O (JAII) の一部である ImageIO は、次のような便利な方法を提供します。 JPEG を含むさまざまな形式のイメージの読み取りと書き込み。ただし、デフォルトでは、ImageIO は JPEG 圧縮レベルを直接制御できません。この記事では、この制限を克服し、BufferedImage を JPEG ファイルとして保存する際に必要な圧縮レベルを設定する方法について説明します。

BufferedImage を JPEG として保存する Java 関数

提供されている Java 関数 getScreenShot BufferedImage をキャプチャし、JPEG ファイルとして保存します。ただし、圧縮設定は指定されていません。

<code class="java">public static void getScreenShot(BufferedImage capture, Path folder, String filename) {
        try {
            ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg"));
        } catch (AWTException | IOException ex) {
            Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex);
        }
}</code>

JPEG 圧縮レベルの設定

JPEG 圧縮レベルを設定するには、ImageWriteParam オブジェクトにアクセスする必要があります。このオブジェクトには、圧縮レベルを制御するパラメータが含まれています。画像のエンコード処理。より詳細なスニペットは次のとおりです。

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

compressionMode を MODE_EXPLICIT に設定することで、圧縮レベルを明示的に制御します。 CompressionQuality に渡される値によって、目的の圧縮レベルが決まります。1.0f は最大品質を表し、0.0f は最大圧縮を表します。

追加の考慮事項

  • ImageWriter.setOutput には ImageOutputStream を渡す必要があります。
  • FileImageOutputStream と MemoryCacheImageOutputStream は、ほとんどの場合に推奨される実装です。

これらの拡張機能を組み込むことで、Java で ImageIO を使用して画像を保存する際に、特定の要件を満たすように JPEG 圧縮レベルをカスタマイズできます。

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

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