Saat mengekspor gambar, slider kualitas JPEG itu, apakah kamu selalu menganggapnya sebagai persentase? Geser ke 80, dalam hati berpikir “delapan puluh persen kualitas terjaga”; tarik ke 100, merasa “nah, ini tidak ada yang hilang sama sekali.”
Pemahaman ini harus dibongkar total: angka pada slider sama sekali tidak ada hubungannya dengan “berapa persen kualitas”, dan kualitas 100 juga bukan lossless. Langsung saja kesimpulan yang bisa langsung dipakai—foto yang ingin disimpan dengan aman, letakkan di 85–92; untuk web dan media sosial, 75–82 sudah cukup; jangan jadikan 100 sebagai default, itu hanya akan menggandakan bahkan melipatgandakan ukuran file, tanpa menambah kualitas sedikit pun. Berikut penjelasan dengan bahasa sederhana, membedah slider ini.
Satu kalimat jelas: slider kualitas JPEG bukan mengontrol “berapa banyak kualitas yang dipertahankan”, melainkan seberapa kejam sekelompok pembagi dalam tabel kuantisasi—semakin besar pembagi, semakin kasar pembulatan, semakin banyak yang hilang. Hubungannya dengan kualitas dan ukuran file bukan linear, perubahan dari 100 ke 90 tidak sama dengan perubahan dari 20 ke 10.
Pertama-tama, mari kita sepakati dulu premisnya: JPEG adalah format lossy, sejak kamu menekan tombol simpan saat itu juga sudah kehilangan sesuatu, slider hanya menentukan “seberapa parah kehilangannya”, bukan menentukan “hilang atau tidak”. Cara kehilangannya memiliki alur tetap, slider adalah gerbang terakhir dalam lini produksi ini.
Saat menyimpan, gambar pertama-tama dikonversi dari RGB ke YCbCr, memisahkan kecerahan dan warna menjadi dua jalur. Ini dilakukan karena mata manusia jauh lebih peka terhadap kecerahan daripada warna, dengan memisahkan dulu, nanti lebih mudah memprioritaskan kecerahan.
Selanjutnya, seluruh gambar dipotong menjadi blok-blok kecil 8×8 piksel, setiap blok menjalani Discrete Cosine Transform (DCT), mengubah warna piksel menjadi serangkaian nilai frekuensi. Bisa dianalogikan seperti memecah akor menjadi nada-nada individual: frekuensi rendah adalah warna dasar dan gradasi gambar, frekuensi tinggi adalah tepi tajam dan tekstur halus. Versi lengkap dari proses ini, entri Wikipedia JPEG menjelaskannya dengan sangat lengkap.
Senjata pembunuh yang sebenarnya ada di langkah terakhir: setiap nilai frekuensi dibagi dengan angka dalam tabel kuantisasi (Quantization Table), lalu dibulatkan ke bilangan bulat terdekat. Pembulatan, di sinilah informasi mati secara permanen—sisa pembagian yang tidak habis langsung dibuang, tidak bisa kembali. Yang diatur slider kualitas adalah seberapa kejam pembagi-pembagi ini: nilai slider tinggi, pembagi kecil, pembulatan hampir tidak merusak data; nilai slider rendah, pembagi besar, pembulatan langsung menghapus detail. Dan pembagi komponen frekuensi tinggi naik lebih cepat, jadi yang pertama dikorbankan setiap kali adalah tepi dan tekstur halus.
Itulah sebabnya ia tidak bisa menjadi persentase. Dari 100 ditarik ke 90, dan dari 20 ditarik ke 10, perubahan pembaginya sama sekali berbeda, perbedaan kualitas dan ukuran file juga sama sekali berbeda—di sekitar 90 menggeser satu langkah, kamu mungkin tidak merasakan apa-apa; di sekitar 20 menggeser satu langkah, gambar langsung rusak. Menganggapnya sebagai persentase adalah kesalahpahaman yang paling umum dan paling merugikan pada kontrol ini.
Mari beri jawaban dulu: 100 masih jauh dari lossless karena ada dua masalah mendasar, satu tidak bergantung pada pengaturan slider, satu lagi bahkan pengaturan slider pun tidak bisa menghindarinya.
Yang pertama adalah chroma subsampling. Setelah RGB dikonversi ke YCbCr, sebelum kompresi benar-benar dimulai, sebagian besar encoder sudah membuang sekitar 75% detail kroma, alasannya masih sama: mata manusia kurang peka terhadap warna, dibuang juga tidak terlihat. Langkah ini sama sekali tidak diatur slider, walaupun kamu mengatur ke 100, langkah ini tetap dijalankan.
Yang kedua adalah matematika itu sendiri tidak sempurna. Bahkan jika pembagi dalam tabel kuantisasi sudah diletakkan pada minimum, “piksel menjadi frekuensi, frekuensi kembali menjadi piksel” bolak-balik ini, masih ada kesalahan pembulatan kecil. File yang tersimpan saat dibuka sudah bukan piksel yang sama seperti saat kamu menekan tombol simpan.
Kalau benar-benar ingin tidak kehilangan satu bit pun, silakan ambil jalur lossless: PNG, TIFF, atau WebP mode lossless. Lossy adalah jalan satu arah, semua level JPEG sama saja, termasuk yang terlihat “sempurna” itu, 100.
Sejumlah besar pengujian dan perbandingan tingkat piksel, akhirnya bermuara pada satu pembatas yang sangat jelas: dua rentang, mencakup hampir semua skenario.
85–92 adalah mode penyimpanan. Portofolio, gambar yang akan diserahkan ke klien, gambar asli yang tidak tega kamu sentuh, letakkan di mode ini. File yang disimpan pada kualitas 90, kira-kira 1/8 hingga 1/12 dari yang tidak dikompresi, dan perbedaannya tidak terlihat mata—kamu harus memperbesar ke 400%, menatap satu bagian kecil, baru bisa membedakan perubahannya.
75–82 adalah mode web. Gambar untuk situs web, unggahan media sosial, letakkan di mode ini. File 40%–60% lebih kecil dari mode penyimpanan, yang dikorbankan terutama adalah sedikit pelembutan di area tekstur kompleks, pada tampilan normal hampir tidak terasa.
Jika sudah membaca artikel sebelumnya “Lossy dan Lossless”, rentang manis 80–85 yang diberikan di sana tidak bertentangan dengan dua mode ini: sekitar 80 memang sudah masuk mode web, 85 tepat masuk ke mode penyimpanan, gambar yang sudah disimpan pada 80–85 tidak perlu diproses ulang.
Tiga rentang dirangkum menjadi satu kalimat: hal yang ingin disimpan letakkan di 85–92, hal yang akan dikirim keluar letakkan di 75–82, di bawah 60 adalah zona ranjau, hindari.
Pengaturan default ekspor ditarik ke 100, itu kecemasan, bukan strategi. File pada kualitas 85, 60%–75% lebih kecil dari kualitas 100, tetapi secara kualitas tidak terlihat perbedaan apa pun; untuk web, ini hanya memperpanjang waktu muat secara percuma—untuk optimasi gambar web, saya sudah membahasnya secara detail di artikel percepatan gambar web.
Slider melewati 60 ke bawah, yang jatuh bukan lereng, tapi jurang.
Penyebabnya masih pembulatan. Ketika nilainya terlalu rendah, pembagi komponen frekuensi tinggi menjadi sangat besar hingga tidak masuk akal, satu nilai frekuensi setelah dibagi lalu dibulatkan, langsung menjadi nol—detail ini sama saja tidak disimpan. Akibatnya seluruh kategori informasi visual hilang secara massal: helai rambut, tekstur kain, ujung goresan huruf serif, semuanya adalah yang pertama kali hilang.
Gambar yang tersisa adalah artefak JPEG standar: blok-blok warna 8×8, pita warna dalam gradasi, tepi berbulu di samping tepi tajam dan mosquito noise. Bentuk besar masih ada, tapi gambar ini sudah tidak bisa dianggap “gambar untuk dilihat manusia”. Untuk setiap jenis artefak dan asal-usulnya, saya sudah menulis artikel ilustrasi terpisah.
Jadi kesimpulan saya adalah: 60 adalah batas bawah praktis untuk gambar biasa. Beberapa KB yang dihemat lagi, yang ditukar adalah sesuatu yang terlihat palsu sekilas, tidak sebanding.
“Kualitas 90” bukan mata uang universal. Spesifikasi JPEG memberikan satu set tabel kuantisasi yang direkomendasikan (Annex K), tetapi setiap software menggunakan tabel yang mana, bagaimana menskalakannya, adalah ketentuan masing-masing. Sama-sama “kualitas tinggi”, empat alat umum memberikan angka yang sama sekali berbeda: skala Photoshop adalah 0–12, 10-nya kira-kira setara dengan implementasi referensi libjpeg 90; GIMP dan ImageMagick keduanya berskala 1–100, mode “kualitas tinggi” GIMP mengambil 85, ImageMagick mengambil 92; libjpeg sebagai implementasi referensi, nilai referensinya sendiri adalah 90.
Dua alat sama-sama diatur “kualitas 85”, file yang diekspor juga tidak akan sama. Jadi jangan mengingat satu angka di satu software, lalu pindah ke software lain meniru begitu saja. Membandingkan lintas software, lintas proyek, cara yang andal hanya dua: lihat ukuran output aktual, lihat efek gambar aktual.
Slider tidak bisa diandalkan, mata juga dipengaruhi layar dan kondisi, “tidak terlihat perbedaan” apakah masih bisa dikuantifikasi? Bisa, cara yang jauh lebih andal adalah mengganti penggaris: Structural Similarity Index Measure (SSIM).
Ia tidak membandingkan piksel satu per satu, melainkan melihat berapa banyak yang berubah pada tiga hal: struktur, kecerahan, kontras, lebih mendekati cara mata manusia menilai gambar daripada “menghitung berapa banyak piksel yang berbeda”. Skor dari 0 sampai 1, 1 berarti dua gambar sepenuhnya sama. Rumus dan seluk-beluknya, entri Wikipedia SSIM menjelaskannya dengan jelas.
Untuk pengaturan kualitas yang umum, SSIM kira-kira pada level ini: file kualitas 85 umumnya mendapat skor lebih besar dari 0,97, secara visual tidak terbedakan dari aslinya; turun ke 60, skor berada di 0,90–0,93, sedikit melembut, baru terlihat saat diperbesar; sampai 40, hanya tersisa 0,82–0,87, artefak sudah terlihat mata.
Deretan angka ini jauh lebih jujur daripada slider. Jika ingin menentukan pengaturan kualitas tanpa menebak-nebak, bisa menggunakan perintah compare ImageMagick untuk langsung menghitung SSIM dua gambar, menemukan titik “ukuran file paling hemat, tapi tidak jatuh di bawah garis persepsi 0,85”. Cara menggunakan penggaris ini, saya sudah menulis artikel terpisah yang membahas SSIM secara mendalam.
Alat kecil di bawah ini berjalan sepenuhnya di browser Anda – gambar tidak pernah dikirim. Pilih gambar (atau klik “Coba gambar contoh”), geser slider dan amati bagaimana ukuran terkompresi dan SSIM berubah; Anda juga bisa mencari otomatis pengaturan dengan ukuran terkecil pada SSIM ≥ 0,85. Nilai SSIM dihitung real-time pada gambar yang baru dikompresi – persis penggaris di bagian sebelumnya.
Catatan: encoder JPEG bawaan browser tidak mengekspos chroma subsampling maupun tabel kuantisasi. Karena itu alat ini menunjukkan efek nyata slider dan mengukur perbedaan dengan SSIM, bukan membuat isi encoder bisa diubah – dan memastikan tepat apa yang dikatakan artikel ini: kualitas 100 bukan lossless, dan angka yang sama tidak berarti sama di software yang berbeda.
Sebagian besar waktu sekitar 80 sudah cukup, 100 tidak boleh dijadikan default. File kualitas 85, 60%–75% lebih kecil dari kualitas 100, tetapi mata tidak melihat perbedaan apa pun; foto yang ingin aman letakkan di 85–92, web dan media sosial 75–82 sudah cukup, di bawah 60 akan muncul artefak yang jelas.
Bukan. Bahkan jika ditarik penuh ke 100, JPEG biasanya terlebih dahulu membuang sekitar 75% detail warna dalam chroma subsampling, lalu melalui kuantisasi dan pembulatan menyebabkan kehilangan yang tidak dapat dipulihkan. Ingin lossless, silakan gunakan PNG, TIFF, atau WebP lossless.
Skala kualitas JPEG Photoshop adalah 0–12, bukan 1–100, 10-nya kira-kira setara dengan implementasi referensi libjpeg 90. Setiap software memetakan angka yang sama secara berbeda, lintas software jangan meniru angka, jadikan ukuran output aktual dan efek gambar sebagai patokan.
Cara paling langsung adalah memperbesar dan membandingkannya dengan aslinya; untuk indikator objektif, gunakan SSIM. JPEG kualitas 85 umumnya SSIM lebih besar dari 0,97, secara visual tidak terbedakan dari aslinya; sekitar 40 turun ke 0,82–0,87, artefak terlihat mata. Perintah compare ImageMagick dapat langsung menghitung skor ini.
Angka pada slider itu adalah parameter pembagian, bukan persentase kualitas; 100 bukan lossless, di bawah 60 adalah jurang. Kalau benar-benar ingin satu mantra: foto simpan 85, yang dikirim ke web simpan 80, 100 tidak perlu ke mana-mana—ukuran file jadi berlipat ganda, padahal kualitas tidak naik sedikit pun.
Jika ingin mempelajari cara memilih format, mengubah ukuran, hingga mengatur kualitas dan percepatan web dengan lancar, lihat Panduan Lengkap Kompresi Gambar, seluruh rantai ada di artikel itu.