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
Lepaskan: 2024-10-24 21:56:02
asal
418 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan