Cara Kerja Kompresi Gambar — Resolusi, Kualitas, Subsampling, Metadata
Lima faktor penentu ukuran file foto: resolusi, kualitas, chroma subsampling, metadata, dan format, plus urutan terbaik mengecilkan foto ke target seperti 200KB.
Ukuran file foto ditentukan oleh "berapa banyak piksel, berapa bit per piksel, dan disertai informasi tambahan apa" yang disimpan. Satu foto ponsel sering berukuran 3–5MB, sedangkan formulir unggah berkas lamaran meminta 100–500KB; ada lima cara utama untuk menutup selisih ini. Artikel ini menjelaskan pengaruh tiap cara terhadap ukuran dan kualitas, serta urutan pengaturan terbaik saat menargetkan ukuran tertentu.
1. Resolusi — faktor yang paling pasti mengecilkan ukuran
Ukuran data mentah sebelum kompresi adalah piksel horizontal × piksel vertikal × 3 byte (RGB). Foto 4032×3024 piksel berisi sekitar 12,19 juta piksel, atau sekitar 36MB data mentah. Jika lebar dan tinggi masing-masing dibagi dua, jumlah piksel menjadi seperempat, sehingga ukuran setelah kompresi juga turun kira-kira dengan rasio serupa.
| Lebar×tinggi (px) | Jumlah piksel | Data mentah (RGB) | Contoh penggunaan |
|---|---|---|---|
| 4032×3024 | sekitar 12,19 juta | sekitar 36.6MB | Asli dari ponsel |
| 2016×1512 | sekitar 3,05 juta | sekitar 9.1MB | Gambar blog kualitas tinggi |
| 1080×1350 | sekitar 1,46 juta | sekitar 4.4MB | Postingan potret Instagram |
| 413×531 | sekitar 220 ribu | sekitar 0.66MB | Foto paspor (ukuran anjuran pengajuan daring Korea) |
Jika ukuran piksel yang dibutuhkan sudah ditentukan, seperti foto untuk berkas lamaran, perkecil dulu ke ukuran itu. Sering kali langkah ini saja sudah cukup untuk lolos batas ukuran. Untuk foto paspor daring, Kementerian Luar Negeri Korea menganjurkan 413×531 piksel dan mensyaratkan maksimal 500KB; JPG yang diperkecil ke ukuran ini biasanya lolos dengan leluasa bahkan pada kualitas tinggi.
2. Kualitas dan kuantisasi — apa yang dilakukan slider "kualitas" JPG dan WebP
JPG membagi gambar menjadi blok 8×8, mengubahnya menjadi komponen frekuensi, lalu membagi setiap komponen dengan nilai pada tabel kuantisasi dan membulatkannya. Menurunkan nilai kualitas memperbesar pembagi ini, sehingga makin banyak komponen frekuensi tinggi yang menjadi 0 setelah pembulatan. Jika angka 0 berderet panjang, pengodean entropi (kode Huffman) sesudahnya dapat merepresentasikannya dengan sangat singkat, sehingga ukuran file berkurang.
- Kualitas 90 ke atas: sulit dibedakan dari aslinya dengan mata, tetapi ukuran file melonjak tajam.
- Kualitas 70–85: rentang paling efisien untuk foto. Sebagian besar foto di web berada di rentang ini.
- Kualitas 50 ke bawah: mulai terlihat tangga warna pada langit dan kulit, noda di sekitar tepi (ringing), dan batas blok 8×8.
Hubungan antara nilai kualitas dan ukuran tidak linear. Menurunkan kualitas dari 95 ke 85 memangkas ukuran secara besar, sedangkan dari 60 ke 50 penghematannya kecil tetapi kerusakan kualitas lebih mencolok. Karena itu, jika Anda harus menurunkan kualitas di bawah 60, menurunkan resolusi biasanya memberi hasil lebih baik.
3. Chroma subsampling — menyimpan lebih sedikit informasi warna
Mata manusia peka terhadap perubahan kecerahan tetapi kurang peka terhadap perubahan warna. Karena itu JPG dan WebP lossy biasanya mengubah RGB menjadi kecerahan (Y) dan selisih warna (Cb, Cr), lalu menyimpan selisih warna dengan setengah resolusi horizontal dan vertikal (4:2:0). Cara ini saja mengurangi informasi warna menjadi seperempat, sehingga total data mentah menjadi setengahnya.
Pada foto perbedaannya hampir tidak terlihat, tetapi pada gambar dengan teks merah atau garis berwarna tipis, tepi huruf bisa tampak meluber. Karena spesifikasi WebP lossy selalu memakai 4:2:0 (MDN), grafis yang mengandalkan teks berwarna lebih cocok memakai PNG atau WebP lossless.
4. Metadata — puluhan KB yang tersembunyi di dalam foto
Foto ponsel berisi informasi EXIF seperti perangkat, waktu, dan koordinat GPS, beserta thumbnail kecil untuk pratinjau dan profil warna (ICC). Biasanya hanya beberapa KB hingga puluhan KB sehingga porsinya kecil, tetapi saat targetnya kecil, misalnya di bawah 100KB, tidak bisa diabaikan. Yang terpenting, informasi lokasi ikut terbawa. Jika dienkode ulang dengan Canvas di browser, sebagian besar informasi ini hilang. Rinciannya ada di metadata EXIF dan privasi.
5. Pilihan format — kualitas sama dengan byte lebih sedikit
Pada kualitas yang sama, codec terbaru menghasilkan file lebih kecil. Google menyatakan WebP lossy 25–34% lebih kecil daripada JPG pada kualitas SSIM yang sama, dan AVIF biasanya lebih kecil lagi. Namun jika penerima hanya menerima JPG, format tidak bisa diganti, jadi cara ini terutama dipakai untuk publikasi web. Perbedaan antarformat dirangkum di JPG vs PNG vs WebP vs AVIF.
Nilai kualitas tidak setara antarformat maupun antarprogram
"Kualitas 80" bukan satuan yang ditetapkan standar. Setiap encoder menerjemahkan nilai kualitas ke kekuatan kuantisasi dengan caranya sendiri, sehingga angka 80 yang sama menghasilkan kualitas dan ukuran berbeda pada JPG, WebP, dan AVIF, bahkan JPG pun sedikit berbeda antarprogram. Jadi, alih-alih patokan mutlak "harus disimpan di angka sekian", lebih akurat menentukannya sambil membandingkan hasil dengan aslinya dalam keadaan diperbesar. Saat memproses banyak foto dengan kondisi sama, uji dulu satu foto lalu terapkan ke sisanya.
JPG progresif
Standar JPG (T.81) selain cara baseline yang menggambar sekali dari atas ke bawah, juga mendefinisikan cara progresif yang menampilkan seluruh gambar buram terlebih dahulu lalu makin tajam. Kelebihannya, foto besar terasa lebih cepat muncul di koneksi lambat. Selisih ukurannya bergantung pada foto, dan beberapa perangkat atau program lama tidak bisa membaca JPG progresif, jadi untuk pengiriman berkas, cara baseline lebih aman.
Contoh proses pengaturan
Misalkan foto ponsel 4032×3024 (sekitar 3–4MB) harus diunggah dengan syarat "lebar maksimal 1000 piksel, maksimal 200KB".
- Pertama, perkecil lebar menjadi 1000 piksel. Tinggi menjadi 750 piksel sesuai rasio, dan jumlah piksel turun menjadi sekitar 6% dari aslinya. Langkah ini saja biasanya menghasilkan beberapa ratus KB atau kurang.
- Dalam kondisi itu simpan dengan kualitas 85 dan periksa apakah melebihi 200KB. Jika melebihi, turunkan kualitas ke 80, lalu 75, atau cari dengan pencarian biner.
- Jika foto penuh noise seperti foto malam sehingga kualitas harus di bawah 60, memperkecil sedikit lagi ke lebar 900 piksel memberi hasil lebih bersih.
Urutan menyesuaikan ke ukuran target (KB)
Untuk memenuhi syarat seperti "unggah maksimal 200KB", urutan berikut menghasilkan kehilangan kualitas paling kecil.
- Perkecil dulu ke ukuran piksel yang dibutuhkan. Jika ada spesifikasi, gunakan ukuran itu; jika tidak, sesuaikan dengan ukuran tampilan di layar (mis. lebar 1200–2000px).
- Cari kualitas dengan pencarian biner. Simpan dengan nilai tengah antara kualitas 50 dan 95; jika lebih besar dari target, bagi lagi separuh bawah, jika lebih kecil, bagi separuh atas. Dalam 7–8 kali percobaan Anda bisa menemukan kualitas tertinggi yang masih di bawah target.
- Jika kualitas terlalu rendah, kecilkan sedikit lagi resolusinya. Mengurangi lebar dan tinggi 10% memangkas jumlah piksel sekitar 19%. Lalu ulangi langkah 2.
- Periksa definisi KB. Ada yang menganggap 1KB = 1.000 byte, ada pula yang 1.024 byte. Jika tidak tahu, hitung dengan 1.000 byte dan buat lebih kecil sehingga lolos di kedua standar.
- Bedakan "kurang dari" dan "maksimal". Jika syaratnya "kurang dari 100KB", file yang tepat 100KB tidak lolos.
Alat kompres ukuran foto menjalankan proses ini secara otomatis. Masukkan target KB, alat akan mencari kualitas dengan pencarian biner, dan jika mencapai batas bawah kualitas, resolusi diturunkan bertahap untuk memilih hasil paling tajam yang masih di bawah target.
Kesalahan umum
- Menyimpan ulang file kecil menjadi besar: JPG yang sudah disimpan dengan kualitas 60 lalu disimpan lagi dengan kualitas 95 hanya membengkakkan ukuran; kualitasnya tidak kembali.
- Mengompresi berulang kali: kehilangan menumpuk setiap kali disimpan. Selalu buat hasil yang diinginkan sekali jadi dari file asli.
- Mengompresi tangkapan layar menjadi JPG: teks menjadi lembek dan kadang malah lebih besar daripada PNG. Biarkan tangkapan layar sebagai PNG atau turunkan resolusinya.
Pertanyaan umum
Jika disimpan dengan kualitas 100, apakah hasilnya identik dengan aslinya?
Pada kualitas 100 pun JPG masih menyisakan kehilangan dari konversi warna dan pembulatan, jadi tidak sepenuhnya lossless. Selain itu, di atas kualitas 90 sering kali hampir tidak ada perbedaan yang terlihat, sementara ukuran file membengkak drastis.
Bukankah menurunkan resolusi membuat kualitas memburuk?
Resolusi yang lebih besar dari ukuran tampilan di layar toh akan diperkecil saat ditampilkan, jadi menurunkannya hampir tidak terasa. Sebaliknya, jika diperkecil di bawah ukuran yang dibutuhkan lalu diperbesar lagi, gambar menjadi buram, jadi pastikan dulu ukuran piksel untuk penggunaan akhirnya.
Mengapa ukuran file berbeda-beda di setiap foto padahal pengaturannya sama?
Efisiensi kompresi sangat bergantung pada isi foto. Foto sederhana seperti langit biru menghasilkan file kecil, sedangkan foto dengan banyak detail seperti dedaunan, pasir, atau foto malam yang penuh noise menghasilkan file besar.
Coba sekarang