Pada episode ini kalian memahami profil warna ICC, meng-embed dan mengonversi profil dengan -profile, membedakan sRGB, AdobeRGB, dan CMYK, serta bekerja dengan gambar HDRI dan format EXR.

Di episode 10 kalian sudah memproses ribuan file dengan mogrify dan skrip. Namun ada satu masalah yang sering muncul di pipeline: gambar yang tampak bagus di satu komputer berubah warnanya di komputer lain. Foto yang cerah di monitor kalian menjadi kusam, atau logo perusahaan tampak kehijauan saat dicetak. Masalah ini jarang berasal dari file — melainkan dari manajemen warna: bagaimana angka piksel diterjemahkan menjadi warna yang terlihat.
Episode ini menjelaskan mengapa warna bisa berubah, apa itu profil ICC, cara meng-embed dan mengonversi profil dengan -profile, perbedaan sRGB, AdobeRGB, dan CMYK, serta bekerja dengan HDRI untuk gambar berrentang dinamis lebar.
Nilai piksel hanyalah angka — misalnya 255,0,0 untuk merah. Angka itu tidak berarti apa-apa sampai kita tahu "bahasa" yang dipakainya. Analoginya suhu: angka 25 tidak bermakna tanpa satuan — 25 derajat Celsius dan 25 derajat Fahrenheit sangat berbeda. Demikian pula 255,0,0 dalam ruang warna sRGB berbeda dengan 255,0,0 dalam AdobeRGB.
Ruang warna (colorspace) mendefinisikan cara angka dipetakan ke warna yang terlihat. Jika sebuah gambar tidak menyatakan ruang warnanya, setiap program akan menebak — dan tebakan yang berbeda menghasilkan tampilan yang berbeda pula. Inilah akar dari masalah warna yang berubah-ubah antar perangkat.
Profil ICC (International Color Consortium) adalah file yang menjabarkan pemetaan lengkap ruang warna sebuah perangkat — ibarat paspor yang menyatakan "gambar ini ditulis dalam bahasa AdobeRGB". Menempelkan profil pada gambar adalah cara menanamkan interpretasi yang benar:
magick input.jpg -profile sRGB.icc output.jpg-profile sRGB.icc meng-embed profil ke dalam file output. Perintah magick input.jpg -profile sRGB.icc output.jpg adalah cara paling umum memakainya. Prosesor yang membaca gambar kemudian tahu persis bagaimana menafsirkan angkanya, sehingga warnanya konsisten di semua aplikasi yang menghormati profil.
Tip
Di banyak distribusi Linux, profil standar tersimpan di /usr/share/color/icc/ atau /usr/share/color/icc/colord/ — misalnya sRGB.icc dan AdobeRGB1998.icc. Periksa dengan find /usr/share/color -name '*.icc' untuk melihat profil apa saja yang tersedia sebelum mengonversi.
Meng-embed profil hanya menandai interpretasi; mengonversi mengubah angka piksel agar sesuai dengan ruang warna tujuan. Perintahnya menyebutkan dua profil sekaligus — sumber lalu tujuan:
magick input-srgb.jpg \
-profile sRGB.icc -profile AdobeRGB1998.icc output-adobe.jpgAngka piksel dihitung ulang sehingga warna yang tampak identik meski ditafsirkan dalam AdobeRGB. Ingat urutannya: profil pertama adalah interpretasi asli file, profil kedua adalah interpretasi tujuan. Mengonversi lalu meng-embed adalah dua langkah yang berbeda — kalian perlu keduanya untuk benar-benar pindah ruang warna.
Tiga ruang warna yang paling sering dijumpai, masing-masing dengan keunggulan dan area pakainya:
| Ruang Warna | Cakupan Warna | Kapan Memilih |
|---|---|---|
| sRGB | Paling kecil, standar web | Semua tampilan layar, foto untuk web dan email |
| AdobeRGB | Lebih luas dari sRGB | Foto yang akan dicetak, alur kerja profesional |
| CMYK | Tergantung profil cetak | Dokumen yang akan dicetak offset, percetakan |
sRGB adalah bahasa default layar dan internet — hampir semua browser, sistem operasi, dan ponsel berasumsi gambar bertipe sRGB. AdobeRGB menjangkau warna yang lebih jenuh, tetapi jika gambar dikirim tanpa profil atau ditampilkan pada perangkat sRGB, warnanya tampak redup. CMYK khusus untuk cetak: warna dihitung dari tinta, bukan cahaya, sehingga rentangnya berbeda dan harus dikonversi dengan profil cetak yang sesuai.
Important
Jangan mengonversi ke CMYK tanpa profil cetak yang jelas. Tampilan CMYK di layar selalu perkiraan — setiap mesin cetak punya karakteristik tinta yang berbeda. Konversi ke CMYK hanya bermakna jika tujuannya benar-benar mencetak dengan profil yang disediakan percetakan.
-colorspace vs -profileSelain -profile, ada -colorspace yang juga mengubah ruang warna. Perbedaannya halus tapi krusial:
magick input.jpg -colorspace sRGB output-1.jpg
magick input.jpg -set colorspace sRGB output-2.jpg-colorspace sRGB mengonversi angka piksel dari ruang warna aktif ke sRGB — menghitung ulang nilainya. Sedangkan -set colorspace sRGB hanya menandai ulang interpretasi tanpa mengubah angka. Gunakan -colorspace saat angka harus benar-benar diubah; gunakan -set saat file tidak memiliki profil dan kalian hanya perlu memberi tahu cara membacanya. Kesalahan umum: memakai -set saat seharusnya -colorspace, yang menghasilkan warna ganda mengikuti kesalahan interpretasi.
Setiap ruang warna punya batas: nilai 0 sampai 1 pada skala normal. Gambar biasa yang "dijepit" pada rentang ini kehilangan detail di area sangat terang (highlight) dan sangat gelap (shadow). HDRI (High Dynamic Range) mengatasinya dengan menyimpan angka di luar rentang tersebut.
ImageMagick mendukung HDRI melalui build Q16-HDRI, yang bekerja dengan angka floating point di dalam memori:
magick input.exr -define quantum:format=floating-point \
-resize 50% output.exr-define quantum:format=floating-point menjaga nilai tetap presisi mengambang selama pemrosesan, sehingga highlight yang lebih terang dari 1.0 tidak terpotong. -depth mengatur kedalaman bit pada output — misalnya -depth 16 untuk JPEG-2000 atau PNG 16-bit.
Format yang umum membawa rentang dinamis lebar adalah OpenEXR (.exr) dan Radiance HDR (.hdr). Keduanya dipakai di dunia fotografi dan visual effects karena menyimpan eksposur penuh. Saat memproses input HDR, perhatikan dua hal:
magick foto.exr -auto-level foto-normal.jpg-auto-level merentangkan histogram agar gambar dengan rentang sangat lebar tetap terlihat baik setelah dikonversi ke format biasa. Tanpa peregangan, hasil JPEG dari file HDR sering tampak terlalu gelap atau hampir putih semua. Konsep yang mendasarinya: format output yang sempit (JPEG, PNG) tidak bisa menampung rentang lebar — kalian harus memutuskan bagian mana yang akan "dikorbankan", dan -auto-level membantu mengambil keputusan itu secara otomatis.
Setelah meng-embed atau mengonversi profil, jangan langsung percaya — verifikasi. magick identify -verbose menampilkan seluruh metadata gambar, termasuk profil:
magick identify -verbose output-adobe.jpg | grep -i 'icc'Output bagian icc: menampilkan nama dan ukuran profil yang tertanam — misalnya icc:profiles=icc/adobe-rgb. Pemeriksaan ini mencegah masalah klasik: gambar yang terlihat benar di satu mesin ternyata membawa profil kosong, sehingga warnanya kembali bergantung pada tebakan aplikasi lain. Sebelum mengirim aset keluar, biasakan memeriksa bahwa paspor warna memang ikut bepergian.
Kebiasaan yang sama berlaku untuk file HDR: setelah konversi, jalankan magick identify -verbose output.exr dan lihat bagian Colorspace: serta Depth:. Angka kedalaman bit yang tercetak di sana memberitahu apakah nilai floating point dipertahankan atau sudah dijatuhkan menjadi integer — dan itu menentukan apakah prosesor berikutnya bisa memanfaatkan rentang dinamis yang masih tersisa.
Pada episode 11 kalian sudah memahami mengapa angka piksel butuh interpretasi, meng-embed profil dengan -profile, mengonversi antar profil dengan urutan sumber lalu tujuan, membedakan sRGB, AdobeRGB, dan CMYK beserta area pakainya, memilih -colorspace atau -set dengan tepat, serta bekerja dengan HDRI — -depth, -define quantum:format, dan input EXR serta HDR.
Yang perlu dibawa pulang: warna adalah bahasa, dan profil ICC adalah kamusnya. Sebuah pipeline yang profesional selalu memastikan profil ter-embed, ruang warna tujuan yang jelas, dan kedalaman bit yang cukup sejak awal — bukan memperbaiki warna di akhir.
Di episode 12 berikutnya kita membuka dunia format modern dan delegate: WebP, AVIF, JPEG XL, HEIC, SVG, dan PDF beserta ketergantungan library eksternalnya. Sampai jumpa!