Pada episode ini kalian menggambar shape dan garis dengan -draw, menulis teks dengan -annotate, membuat watermark transparan, serta memanfaatkan caption untuk teks yang menyesuaikan ukuran secara otomatis.

Di episode 6 kalian sudah menata banyak gambar menjadi grid thumbnail dengan magick montage. Kali ini kita membalik arah: alih-alih menggabungkan gambar yang sudah ada, kalian akan menggambar langsung di atas kanvas kosong — shape geometris, garis, hingga teks. Kemampuan ini terdengar seperti pekerjaan editor grafis, tetapi ImageMagick melakukannya lewat teks perintah, sehingga bisa dipakai dalam pipeline otomatis: menambah label pada ribuan foto, menyisipkan watermark ke sertifikat, atau membuat banner untuk kampanye.
Konsep kuncinya sederhana: setiap perintah menggambar satu lapisan di atas gambar, dan urutan perintah menentukan lapisan mana yang muncul di depan. Dari sanalah kita membangun komposisi gambar tanpa membukanya satu per satu.
Sebelum menggambar, kita butuh kanvas. ImageMagick punya pseudo-format xc: yang membuat gambar polos berisi satu warna:
magick -size 800x600 xc:white kanvas.png-size 800x600 menentukan dimensi kanvas, dan xc:white mengisinya dengan warna putih. Ini setara dengan membuka dokumen kosong di editor grafis. Warna apa pun bisa dipakai — xc:transparent menghasilkan kanvas transparan, berguna saat hasilnya akan digabungkan dengan gambar lain.
-drawInti menggambar di ImageMagick adalah -draw, yang menerima string berisi satu atau lebih primitif. Setiap primitif memakai sistem koordinat piksel: x,y dengan 0,0 di pojok kiri atas.
magick -size 800x600 xc:white \
-stroke black -fill '#e74c3c' -strokewidth 3 \
-draw "rectangle 50,50 250,250" \
-draw "circle 400,200 400,120" \
-draw "polygon 500,400 650,300 700,450" \
-draw "line 20,500 780,500" \
shapes.pngPerhatikan pola koordinat tiap primitif:
rectangle x1,y1 x2,y2 — dua sudut berseberangan, membentuk persegi.circle cx,cy px,py — titik pusat lalu satu titik di kelilingnya; jarak antar keduanya menjadi jari-jari.polygon — daftar titik yang dihubungkan dan ditutup secara otomatis.line x1,y1 x2,y2 — dua titik yang dihubungkan garis lurus.Uraian setiap primitif adalah bahasa yang sama yang dipakai ImageMagick, jadi setelah hafal bentuk dasarnya, kalian bisa membaca dan menulis perintah orang lain dengan mudah.
Untuk garis melengkung, primitif bezier memakai empat titik pada kurva kubik — analog dengan pen tool di editor vektor.
magick -size 400x300 xc:white \
-stroke '#2e86de' -fill none -strokewidth 2 \
-draw "bezier 20,250 100,50 300,50 380,250" \
bezier.pngEmpat titik berturut-turut menentukan kurva: titik awal, dua titik kontrol yang "menarik" arah kurva, dan titik akhir. -fill none membuat kurva tanpa isian — hanya garis yang terlihat. Kombinasi bezier dan polygon cukup untuk menggambar logo dan ikon sederhana dari command line.
Dua opsi yang paling sering dipasangkan dengan -draw:
-stroke Warna — warna garis tepi; didukung -strokewidth untuk ketebalan.-fill Warna — warna isian dalam bentuk. Warna bisa hex (#e74c3c) maupun format lain dari episode 3.Perbedaannya mudah ditebak: fill mengisi bagian dalam bentuk, stroke menggambar tepinya. Saat keduanya dipakai, bentuk tampak "berbingkai". Saat hanya -stroke tanpa -fill (atau -fill none), yang tersisa hanya garis luar — teknik favorit untuk diagram.
-annotateTeks ditulis dengan -annotate, yang dikombinasikan dengan tiga opsi utama: -font untuk keluarga huruf, -pointsize untuk ukuran, dan -gravity untuk posisi jangkar.
magick kanvas.png \
-font DejaVu-Sans -pointsize 48 -fill '#333333' \
-gravity South -annotate 0x0+0+40 "Rilis 2026" \
annotated.png-gravity South menjangkarkan teks ke tepi bawah, dan 0x0+0+40 menambahkan offset 40 piksel dari tepi tersebut. Angka pertama dari -annotate adalah rotasi dalam derajat — -annotate 15x15+0+40 memiringkan teks 15 derajat. Kombinasi gravity dan offset adalah cara paling nyaman untuk menempatkan teks tanpa menghitung koordinat manual.
Tip
Untuk melihat font yang tersedia di sistem kalian, jalankan magick -list font. Nama yang muncul di kolom family bisa langsung dipakai sebagai nilai -font, misalnya DejaVu-Sans-Bold atau Liberation-Serif. Sistem tanpa font DejaVu akan menolak nama itu, jadi cek dulu.
Watermark adalah teks yang diletakkan di atas gambar dengan opacity rendah. Di episode 5 kalian belajar alpha; sekarang kita pakai praktiknya: isian rgba(...) dengan nilai alpha di bawah 1 membuat teks tembus pandang.
magick foto.jpg \
-font DejaVu-Sans-Bold -pointsize 64 \
-fill 'rgba(255,255,255,0.35)' -gravity SouthEast \
-annotate +20+20 "devvnull" \
foto-watermark.jpgrgba(255,255,255,0.35) berarti putih dengan 35 persen opacity. Karena -annotate menggambar di atas gambar yang sudah ada, foto asli tetap utuh di bawahnya. Pola yang sama dipakai untuk menambah nomor seri, tanggal, atau nama pemilik ke ribuan file sekaligus — itulah alasan mengapa watermark CLI begitu populer untuk aset digital.
caption:Bagaimana jika teksnya panjang dan harus menyesuaikan ukuran kanvas? Menulis teks panjang dengan -annotate rawan keluar dari tepi gambar. Solusinya pseudo-format caption:: ImageMagick membungkus baris teks secara otomatis agar muat dalam -size yang ditentukan.
magick -size 600x200 -background white -gravity center \
caption:'Rilis utama 2026 sudah tersedia untuk semua pengguna.' \
caption.pngcaption: membaca teks, mengukur panjangnya, lalu menurunkan ukuran huruf atau membungkus baris agar seluruh teks tertampung. Ini sangat berguna untuk label dinamis yang panjangnya tidak pernah sama — misalnya pemberitahuan dari data terbaru. Berbeda dengan -annotate yang selalu memakai ukuran yang kalian tentukan, caption: beradaptasi dengan konten.
Pada episode 7 kalian sudah menggambar shape dengan -draw — rectangle, circle, polygon, line, dan bezier — mengatur garis tepi dan isian lewat -stroke serta -fill, menulis teks dengan -annotate beserta -font, -pointsize, dan -gravity, membuat watermark transparan dengan isian rgba, serta memanfaatkan caption: untuk teks yang menyesuaikan ukuran secara otomatis.
Yang perlu dibawa pulang: gambar adalah kanvas, dan urutan perintah adalah lapisan. Semua keterampilan ini menjadi blok penyusun untuk membuat gambar yang lebih kompleks, seperti banner dan kartu, sepenuhnya dari command line.
Di episode 8 berikutnya kita mengubah mood gambar: filter dan efek — blur, sharpen, deteksi tepi, hingga efek artistik seperti charcoal dan wave. Sampai jumpa!