Rumah >Java >javaTutorial >Bagaimana untuk Mengawal Tahap Mampatan JPEG Apabila Menyimpan Imej Menggunakan ImageIO dalam Java?

Bagaimana untuk Mengawal Tahap Mampatan JPEG Apabila Menyimpan Imej Menggunakan ImageIO dalam Java?

DDD
DDDasal
2024-10-24 21:56:02366semak imbas

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

Cara Menetapkan Tahap Mampatan JPEG Menggunakan ImageIO dalam Java

ImageIO, sebahagian daripada Java API untuk Image I/O (JAII), menyediakan cara yang mudah untuk membaca dan menulis imej dalam pelbagai format, termasuk JPEG. Walau bagaimanapun, secara lalai, ImageIO tidak menawarkan kawalan langsung ke atas tahap mampatan JPEG. Artikel ini meneroka cara untuk mengatasi had ini dan menetapkan tahap mampatan yang diingini semasa menyimpan BufferedImage sebagai fail JPEG.

Fungsi Java untuk Menyimpan BufferedImage sebagai JPEG

Fungsi Java yang disediakan, getScreenShot, menangkap BufferedImage dan menyimpannya sebagai fail JPEG. Walau bagaimanapun, ia tidak menyatakan sebarang tetapan mampatan.

<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>

Menetapkan Tahap Mampatan JPEG

Untuk menetapkan tahap mampatan JPEG, anda perlu mengakses objek ImageWriteParam, yang mengandungi parameter yang mengawal proses pengekodan imej. Berikut ialah coretan yang lebih terperinci:

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

Dengan menetapkan compressionMode kepada MODE_EXPLICIT, anda mengawal tahap mampatan secara eksplisit. Nilai yang dihantar kepada compressionQuality menentukan tahap mampatan yang diingini, dengan 1.0f mewakili kualiti maksimum dan 0.0f mewakili mampatan maksimum.

Pertimbangan Tambahan

  • ImageWriter.setOutput hendaklah diluluskan ImageOutputStream.
  • FileImageOutputStream dan MemoryCacheImageOutputStream ialah pelaksanaan pilihan untuk kebanyakan kes.

Dengan menggabungkan peningkatan ini, anda boleh menyesuaikan tahap mampatan JPEG untuk memenuhi keperluan khusus anda semasa menyimpan imej menggunakan ImageIO dalam Java.

Atas ialah kandungan terperinci Bagaimana untuk Mengawal Tahap Mampatan JPEG Apabila Menyimpan Imej Menggunakan ImageIO dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn