Pada episode ini kita masuk ke dapur seni ImageMagick: menggabungkan banyak gambar dengan operasi layers, alpha compositing, membuat shadow dan glow, serta masking selektif untuk menyunting bagian tertentu dari gambar tanpa menyentuh sisanya.

Di episode 16 kalian membersihkan metadata; sekarang mari kembali ke yang paling menyenangkan: menggabungkan gambar menjadi satu. Sejak episode 10 kalian sudah menggabungkan frame dengan -append dan menyusun grid dengan montage. Episode 17 menaikkan level: bukan sekadar menempel gambar berdampingan, tapi menyusun lapisan — transparansi, bayangan, dan penyuntingan per-region.
Ini episode tentang control: kapan harus memakai -layers flatten, kapan merge, apa bedanya dengan mosaic, bagaimana membuat bayangan yang meyakinkan, dan bagaimana memakai mask agar kalian mengedit satu area tanpa merusak sisanya. Kemampuan ini adalah pembeda antara "menempel gambar" dan "merakit komposisi".
Sebelum berbicara layer, kita harus nyaman dengan alpha channel — channel keempat selain R, G, B yang menentukan kepekatan setiap pixel. Nilai 0 berarti transparan penuh, nilai 255 berarti buram penuh. Tanpa alpha, compositing hanyalah menimpa pixel; dengan alpha, kalian menumpuk cahaya.
magick identify -format '%[channels]' logo.pngOutput perintah di atas menampilkan channel yang ada — muncul huruf a di dalam daftar menandakan alpha ada. Logo PNG biasanya membawanya; JPEG tidak pernah. Sebelum menggabungkan, pastikan lapisan yang kalian gabungkan punya alpha yang benar.
Tip
Jika sebuah PNG tampak kotak hitam saat digabungkan, penyebabnya bukan file rusak — kemungkinan besar alpha tidak dikenali. Periksa dengan magick identify -format '%[channels]'{:bash} file.png dan pastikan huruf a ada sebelum mencoba komposisi.
Cara paling langsung menggabungkan dua gambar adalah -composite. Gambar kedua diletakkan di atas gambar pertama:
magick background.jpg -gravity center logo.png -composite result.png-gravity center menentukan posisi logo.png di tengah background.jpg. Tanpa -gravity, logo menumpuk di pojok kiri atas. -composite menghormati alpha secara bawaan: area transparan logo tidak menutupi background — ini persis perilaku lapisan.
Operasi gabungan ini dikendalikan oleh -compose — resep bagaimana pixel atas dan bawah bercampur. Nilai defaultnya adalah over, yang menumpuk; nilai lain seperti screen, multiply, dan difference menghasilkan efek campuran warna yang berbeda:
magick bg.jpg -gravity center -compose screen logo.png -composite glow.png-compose screen mencerahkan: pixel gelap nyaris tidak berpengaruh, pixel terang menyala. Ini resep dasar untuk membuat efek cahaya dan glow — dua gambar yang dikomposisi dengan screen terasa seperti proyektor yang saling menerangi.
Ketika jumlah gambar lebih dari dua, perintah -composite berantai mulai tidak praktis. Di situlah -layers masuk. ImageMagick memperlakukan daftar gambar sebagai tumpukan layer, dan opsi -layers memilih bagaimana menumpuknya:
-layers flatten — menumpuk semua frame pada satu kanvas, memotong ke bounding box gabungan. Frame yang transparan dibiarkan sebagai lubang yang memperlihatkan frame bawah.-layers merge — menumpuk seperti flatten, tapi kanvasnya tidak dipangkas — semua area semua frame dipertahankan.-layers mosaic — sama seperti merge, tapi kanvas diperluas sehingga semua frame terlihat tanpa terpotong, dan latar transparan diisi.magick layer1.png layer2.png layer3.png -layers flatten result.pngmagick a.png b.png c.png -layers mosaic collage.pngPerbedaan flatten dan mosaic paling terasa pada koordinat. flatten memusatkan hasil; mosaic mempertahankan posisi absolut setiap frame di kanvas — berguna saat kalian menyusun layout dengan koordinat eksplisit. Analogi yang mudah: flatten adalah merapikan meja dengan menumpuk semua ke tengah, mosaic adalah memasang papan dinding sesuai denah masing-masing.
magick -page +100+50 a.png -page +300+120 b.png -layers merge result.png-page +X+Y sebelum setiap frame menetapkan posisi kanvasnya; -layers merge lalu menyatukan semua dengan posisi tersebut dipertahankan. Ini pola dasar untuk merakit layout dari komponen terpisah — kartu, badge, dan teks di atas satu background.
Bayangan tidak perlu editor grafis — ImageMagick bisa membuatnya dari bentuk apa pun. Triknya: duplikat gambar, buramkan salinannya, gelapkan, lalu letakkan di belakang.
magick input.png -background none \
\( +clone -background black -shadow 60x8+5+5 \) \
+swap -gravity south -geometry +0+5 -composite result.pngBaca dari dalam kurung: +clone menggandakan gambar, -shadow 60x8+5+5 membuat bayangan dengan opacity 60%, blur 8 piksel, dan offset 5 piksel ke kanan-bawah. +swap menukar urutan (bayangan jadi lapisan bawah), dan -composite menyatukannya. Ukuran canvas disesuaikan -background none agar bayangan tidak terpotong.
Glow adalah shadow yang arahnya dibalik: alih-alih gelap dan di bawah, ia terang dan menyebar ke semua arah:
magick input.png -background none \
\( +clone -blur 0x12 -level 50%,100% \) \
+swap -composite glow.png-blur 0x12 memburamkan salinan, -level 50%,100% mengubahnya jadi area terang pekat, lalu +swap -composite menempatkannya di belakang aslinya. Hasilnya: objek terlihat memancarkan cahaya — teknik yang sama yang dipakai untuk badge, tombol, dan ikon.
Note
Tanda kurung \( ... \) di perintah ImageMagick membuka sub-proses: perintah di dalamnya bekerja pada salinan gambar tanpa mengganggu urutan luar. Memahami \( ... \) adalah kunci untuk membangun komposisi berlapis tanpa merusak state.
Lapisan di atas menangani urutan gambar. Untuk mengontrol bagian mana dari satu gambar yang terpengaruh, kalian butuh mask. Mask adalah gambar keabuan yang bertindak sebagai filter selektif: area putih berarti "penuh", hitam berarti "tidak sama sekali", abu-abu berarti "sebagian".
Penggunaan paling umum adalah gradien transparansi:
magick -size 400x300 gradient:white-black mask.png
magick photo.jpg mask.png -alpha off -compose CopyOpacity -composite fade.pngPerintah kedua memakai -compose CopyOpacity: alpha gambar diambil dari nilai keabuan mask. Area putih mask menjadi buram, area hitam menjadi transparan, dan gradien menciptakan fade halus. Foto yang tadinya persegi kini memudar ke transparansi — tanpa menyeleksi satu piksel pun secara manual.
Selain CopyOpacity, ImageMagick punya opsi -mask yang mengikat mask ke gambar untuk operasi berikutnya — operasi apapun yang menyusul hanya bekerja pada area yang diizinkan mask:
magick photo.jpg -mask mask.png -blur 0x5 +mask out.jpgDi sini -mask mask.png membatasi -blur 0x5 hanya pada area putih mask, dan +mask melepas mask setelahnya. Hasilnya: hanya bagian tertentu foto yang diburamkan — sisanya tetap tajam. Ini teknik standar untuk menutupi wajah, mengaburkan pelat nomor, atau menyorot objek.
Mask menjadi jauh lebih kuat saat digabungkan dengan layer. Bayangkan pipeline ini: kalian ingin menaruh logo dengan efek glow hanya di area tertentu background:
magick background.jpg \
\( logo.png -resize 150x \( +clone -blur 0x10 \) -swap \
-composite glow-logo.png \) \
\( glow-logo.png -mask region.png -composite \) \
-layers flatten final.jpgTerlalu rumit untuk dibaca berurutan — dan justru itu maksudnya: komposisi profesional dibangun sebagai rantai sub-proses, mask, dan layering. Setiap tanda kurung adalah satu tahap yang bisa diuji terpisah. Mulailah dengan tahap terkecil, verifikasi hasilnya, lalu bungkus tahap berikutnya.
Important
Simpan mask sebagai file PNG keabuan. Saat bekerja dengan mask, pastikan gambar asli tidak dimodifikasi sebelum sempat dipakai — urutan \( ... \) dan +swap menentukan segalanya. Bangun perintah dari dalam ke luar, dan uji setiap lapisan dengan menulis hasil sementara ke file terpisah.
Episode 17 menyelesaikan fondasi komposisi: memahami alpha channel sebagai syarat layering, menggabungkan dua gambar dengan -composite dan -compose, merakit banyak frame dengan -layers flatten, merge, dan mosaic, membuat shadow dan glow dengan +clone dan blur, serta menyunting per-region dengan mask dan -mask.
Inti yang perlu diingat: komposisi adalah masalah urutan dan kontrol — urutan menentukan apa yang menimpa apa, kontrol menentukan bagian mana yang terpengaruh. ImageMagick memberi kalian keduanya lewat sub-proses \( ... \), opsi -layers, dan mask.
Di episode 18 berikutnya kita mendalami transformasi geometri tingkat lanjut: distort — memiringkan, melengkungkan, dan memproyeksikan gambar melampaui resize dan rotate biasa. Sampai jumpa!