⚠️ Ini adalah situs terjemahan tidak resmi dan tidak berafiliasi dengan ImageMagick Studio LLC. Untuk informasi resmi, lihat halaman asli (https://usage.imagemagick.org/index.html).

Contoh penggunaan ImageMagick

ImageMagick versi 7

Halaman-halaman ini mengumpulkan contoh penggunaan ImageMagick (disingkat "IM") versi 7 dari baris perintah. Untuk banyak di antaranya ada pula bentuk penulisan yang berpadanan langsung di rilis lama, versi 6. Halaman-halaman ini juga memperlihatkan apa yang bisa dikerjakan lewat Application Programming Interface (API) ImageMagick. Karena itu, inilah persinggahan pertama yang sebaiknya dituju pengguna IM setelah membaca manual opsi baris perintah (CLI) yang serba ringkas itu.

Di internet, pertanyaan yang sama, "Bagaimana caranya…?", ditanyakan berulang kali. Saya berharap contoh-contoh di halaman ini menjawab sebagian besar pertanyaan "bagaimana caranya" yang biasa muncul.

Situs terkait: Fred's ImageMagick Scripts / RubbleWebs (memakai CLI IM dari PHP) / Snibgo's ImageMagick pages / Situs resmi ImageMagick

ℹ️ Halaman ini adalah terjemahan tidak resmi dari usage.imagemagick.org (IM Examples, oleh Anthony Thyssen). Untuk terjemahan bahasa Indonesia dokumentasi utama ImageMagick, lihat Dokumentasi ImageMagick bahasa Indonesia.

Contoh praktis (Practical Examples)

Penggunaan dasar
Perintah dasar dan penanganan gambar
Penanganan file gambar
Membaca dan menulis gambar
Format gambar yang umum
Menangani gambar GIF, JPEG, dan PNG
Dari teks ke gambar
Mengubah teks menjadi gambar
Efek font gabungan
Gaya dan teknik menggambar font
Anotasi gambar
Memberi label dan menimpakan gambar
Thumbnail dan pemberian frame
Gambar acuan kecil dari foto berukuran besar
Penanganan foto
Memodifikasi foto
Koreksi lensa
Mengoreksi distorsi foto
Montage, larik gambar
Indeks dan larik gambar
Layer multi-gambar
Menggabungkan beberapa gambar sekaligus
Dasar-dasar animasi
Membuat dan menelaah animasi
Optimisasi animasi
Memperkecil animasi GIF
Modifikasi animasi
Mengubah dan menggabungkan animasi
Penanganan video
Menangani gambar video nyata
Perbandingan gambar
Membandingkan dua gambar atau lebih
Teknik lanjutan
Manipulasi gambar yang rumit
Contoh latar belakang
Contoh pembuatan latar belakang acak
Tautan repositori
Tautan ke skrip dan informasi IM lainnya
Indeks referensi
Indeks cepat untuk opsi tertentu
Skrip pendukung
Skrip shell yang dipakai contoh-contoh

Teknik dasar (Basic Techniques)

Pembuatan kanvas
Membuat kanvas dan gambar latar belakang
Dasar-dasar warna dan kanal
Penanganan warna tingkat rendah
Modifikasi warna
Perubahan warna secara umum
Mask dan penghapusan latar belakang
Penanganan kanal alpha dan transparansi
Kuantisasi warna dan dithering
Mengurangi jumlah warna
Memotong dan memberi border
Mengiris, memenggal, memberi frame, memangkas
Mengubah ukuran dan menskalakan
Memperbesar dan memperkecil gambar
Filter resampling
Mengendalikan pengubahan ukuran gambar
Komposisi gambar
Menimpakan dan menggabungkan dua gambar
Menggambar di atas gambar
Grafik vektor, gambar MVG dan SVG
Warping sederhana pada gambar
Membalik, memutar, memelintir
Mendistorsi gambar
Seperti rumah cermin di pasar malam
Transformasi gambar
Perubahan drastis pada tampilan gambar
Efek pemetaan gambar
Efek lensa, kaca, dan riak
Mengaburkan dan menajamkan gambar
Blur, penajaman, dan bayangan
Morfologi bentuk
Memakai ketetanggaan piksel
Konvolusi gambar
Ketetanggaan dengan rata-rata berbobot
Transformasi Fourier
Memodifikasi gambar di domain frekuensi
Anti-aliasing
Efek dan masalah anti-aliasing
Serba-serbi
Hal-hal kecil
API, scripting, dan kompilasi
Penggunaan di lingkungan lain
Penggunaan di Windows
IM di PC Windows
Pengembangan dan bug
Usulan pengembangan dan bug, baru maupun lama

Contoh penggunaan ImageMagick — catatan pengantar

Apa itu ImageMagick? Ringkasan tanpa basa-basi

ImageMagick dirancang untuk pemrosesan gambar secara batch. Artinya, operasi pemrosesan gambar dapat digabungkan dalam sebuah skrip (shell, DOS, Perl, PHP, dan seterusnya) sehingga operasi itu bisa diterapkan ke banyak gambar, atau dipakai sebagai subsistem dari alat lain seperti aplikasi web, alat pemrosesan video, pembangkit panorama, dan sebagainya. Ini bukan editor gambar berantarmuka grafis.

ImageMagick pertama-tama adalah pengonversi gambar ke gambar. Itulah tujuan rancangannya semula. Artinya, ia akan mengonversi gambar dalam hampir semua format gambar (beri tahu kami kalau ada yang tidak bisa) ke format gambar mana pun yang lain.

Tetapi ia juga merupakan pustaka algoritme pemrosesan gambar. Algoritme ini dapat diakses lewat baris perintah dan skrip shell/DOS (yang diperagakan halaman-halaman contoh ini), atau lewat sejumlah besar bahasa pemrograman seperti C, C++, Perl, Ruby, PHP, dan seterusnya. Lihat: API ImageMagick.

Kecepatan tidak pernah menjadi keunggulan utama IM, yang lebih menekankan mutu gambar yang dihasilkannya. Bukan berarti IM tidak bisa mentransformasi gambar dalam waktu yang wajar. Hanya saja ia tidak secepat kilat. Karena itu, IM bisa lambat pada operasi pemrosesan tertentu, terutama ketika berusaha mengompres gambar ke format gambar yang kemampuannya terbatas.

ImageMagick terutama berurusan dengan gambar dalam bentuk larik piksel berbentuk persegi panjang, yang lazim disebut "raster". Ia dapat menangani format gambar "vektor" seperti Postscript atau PDF, tetapi dengan konsekuensi gambar itu dikonversi menjadi raster saat dimuat, lalu pembungkus gambar vektor dibangkitkan di sekeliling raster saat disimpan. Akibatnya, gambar vektor sering diproses dengan buruk bila memakai pengaturan (setting) bawaan. Namun, opsi tertentu dapat digunakan untuk memperbaiki keadaan ini. Lihat: Sepatah kata tentang format gambar vektor.

Tentang contoh penggunaan ImageMagick ini

Halaman-halaman ini dikembangkan dari, dan merupakan kelanjutan dari, halaman saya Kumpulan petunjuk dan kiat ImageMagick yang mulai saya tulis pada 1993 dan saya taruh di World Wide Web yang waktu itu masih serba baru. Keterangan tentang banyak sisi IM, termasuk catatan yang tidak dimuat di halaman ini, masih ada di dokumen tersebut. Bedanya, halaman yang sekarang ini dirancang untuk dibaca orang lain, sedangkan dokumen petunjuk dan kiat itu semata-mata untuk keperluan saya sendiri. Jadi, di beberapa tempat isinya bisa kabur atau berantakan. Silakan melihatnya, belajar darinya, dan memberi komentar.

Contoh-contoh lain diambil atau dikembangkan dari jawaban atas pertanyaan pengguna di Forum IM, atau dikirimkan kepada saya sebagai pemecahan berbagai masalah.

Saya menantikan usulan dan email dari pengguna IM lain. Email semacam itu umumnya berujung pada perbaikan dan perluasan halaman contoh ini.

Lingkungan baris perintah

Semua contoh ditulis untuk dipakai di UNIX, khususnya sistem GNU/Linux, dengan skrip BASH. Karena itu, sebagian contoh memakai loop 'for-do' shell. Kebanyakan contoh memakai garis miring terbalik '\' di akhir baris untuk melanjutkan perintah ke baris berikutnya. Perintah yang panjang dipecah menjadi beberapa baris agar langkah-langkah yang diterapkan lebih menonjol.

Meski begitu, contoh-contoh ini tetap dapat Anda pakai dari skrip batch PC Windows, dengan sedikit perubahan pada penanganan karakter tertentu. Dengan sedikit penyesuaian, contoh-contoh itu juga bisa dijalankan langsung dari pemanggilan 'system' di dalam skrip PHP.

Lihat Penggunaan di Windows dan API & scripting untuk keterangan lebih lanjut tentang pemakaian perintah ImageMagick di lingkungan alternatif tersebut. Sumbangan dan contoh uji selalu disambut baik.

PerlMagick dan API lainnya

Contoh mana pun di sini semestinya juga bisa disesuaikan untuk memakai API IM dari bahasa seperti Perl, C, C++, Ruby, PHP, dan seterusnya. Saya menyarankan mencobanya dulu di baris perintah sampai benar, baru kemudian mengalihkan operasinya ke API tertentu yang sedang dipakai.

Meskipun keadaannya membaik pesat sejak IM versi 6, baris perintah sebenarnya hanya menangani satu urutan gambar dalam satu waktu. API tidak punya batasan itu dan membuat beberapa urutan gambar dapat dimanipulasi, terpisah maupun bersama-sama, untuk melakukan operasi yang lebih rumit. Kemampuan ini membuat contoh-contoh di sini lebih sederhana bila diimplementasikan dengan API IM, sekaligus menghapus keharusan menyimpan gambar sebagai file sementara seperti yang dituntut banyak contoh baris perintah. Dengan API, hanya gambar yang permanen dan semipermanen yang perlu disimpan ke disk.

Pada dasarnya, biarkan halaman contoh ini menjadi titik awal untuk melihat apa saja yang mungkin dilakukan dengan ImageMagick. Setelah itu, rumuskan dulu apa yang hendak dikerjakan di baris perintah, sebelum menuliskan operasinya dalam skrip dan kode API, tempat perubahan besar jauh lebih sulit dilakukan.

Saya juga menyarankan agar kode API diberi komentar sebanyak-banyaknya, disertai padanan baris perintah dari apa yang hendak dikerjakan bila memungkinkan. Dengan begitu, hasilnya bisa diperiksa dan dibandingkan dengan hasil dari baris perintah. Cara ini memudahkan penelusuran masalah yang mungkin Anda temui kemudian, terutama ketika pemrosesan gambar di pustaka inti ImageMagick diperbaiki.

Mengunduh gambar masukan dan hasilnya

Sebisa mungkin saya memakai gambar bawaan IM (seperti "logo:" atau "rose:") sebagai gambar masukan bagi perintah contoh IM, atau membangkitkan gambar masukan dengan perintah IM. Saya juga kerap memakai ulang keluaran perintah sebelumnya pada contoh berikutnya. Karena itu, biasanya Anda tidak perlu mengunduh gambar 'uji' apa pun untuk mencoba sendiri contoh-contoh ini.

Namun, gambar bangkitan atau gambar bawaan seperti itu tidak selalu praktis. Jadi, ketika saya memang memakai gambar dari luar, saya cenderung memakai ulang gambar masukan itu, atau hasil contoh sebelumnya, untuk contoh-contoh berikutnya di bagian yang sama.

Kadang gambar sumber aslinya ditampilkan, dan untuk gambar yang lebih besar disediakan tautan ke gambar sumbernya. Yang lebih lazim, hanya gambar hasil akhir yang ditampilkan, karena masukannya sudah dikenal atau sudah jelas.

Hampir semua perintah contoh IM yang ditampilkan dijalankan di direktori web yang sama dengan tempatnya muncul. Artinya, perintah yang Anda lihat adalah perintah yang benar-benar dipakai untuk membangkitkan gambarnya. Karena itu, URL halamannya dapat diubah untuk mengunduh atau melihat gambar masukan yang dipakai sebuah contoh. Salinan tambahan gambar sumber dari luar juga ditaruh di subdirektori "images" dan "img_photos". Lihat juga contoh Fancy Photo Index untuk gambar-gambar itu.

Kalau sebuah contoh menghasilkan keluaran teks atau informasi gambar, keluaran itu disimpan ke file teks, lalu gambarnya dibangkitkan untuk ditampilkan di halaman web. Memilih gambar keluaran teks tersebut akan menautkan ke salinan teks yang sebenarnya dikeluarkan perintah itu.

Pada semua contoh ini, gambar keluaran semestinya dapat dipilih untuk mengunduh gambar yang benar-benar dibuat oleh perintah contoh. Tetapi awas, tidak semua peramban memahami semua format gambar yang dipakai.

Sumber gambar dari luar

Omong-omong, sebagian besar gambar sumber yang dipakai dalam contoh-contoh ini berasal dari Anthony's Icon Library, khususnya bagian tile latar belakang, clip-art besar, dan naga dari pustaka itu. (Saya suka naga!) CATATAN SAMPINGAN: halaman-halaman itu mungkin sedang tidak dapat diakses karena situsnya perlahan berpindah ke server baru.

Pustaka ini sebenarnya lebih tua daripada WWW. Saya membuatnya pada 1991 karena langkanya gambar ikonik yang bagus dan bersih untuk dipakai di X Window System. Kehadiran WWW tentu saja mengubah keadaan itu, tetapi pustaka asli saya masih ada dan tetap tersedia sebagai sumber gambar, meski tidak lagi bertambah secara aktif.

Beberapa gambar tertentu, dan gambar yang lebih besar, disumbangkan oleh penulis contoh yang bersangkutan. Nama penulis contoh semacam itu dicantumkan di bagian sumbangan, atau di bagian bawah halaman.

Kalau Anda mencari gambar tertentu, saya menyarankan memakai Google Image Search (atau yang serupa) untuk menemukan yang cocok. Gambar seperti itu tentu bisa dikonversi atau diubah ukurannya dengan IM sesuai keperluan Anda sendiri. Namun, berhati-hatilah soal hak cipta bila gambar itu hendak dipakai secara komersial.

Gambar PNG di halaman web

[IM Output]

Di banyak contoh, saya memakai gambar berformat PNG, seperti yang ditampilkan di sebelah kanan teks ini. Format gambar PNG mendukung gambar dengan piksel semitransparan, kemampuan yang jarang disediakan format gambar lain. Format ini juga sudah sangat dipahami dan karenanya dapat dipakai oleh hampir semua program gambar dan peramban web masa kini.

Namun, sebagian peramban web TIDAK menangani gambar PNG transparan dengan benar (yang paling terkenal Microsoft Internet Explorer v6). Karena itu, saya umumnya memakai format JPEG dan GIF untuk gambar di web, dan hanya memakai format PNG ketika membangkitkan gambar dengan piksel semitransparan, atau ketika warna yang persis dibutuhkan untuk contoh berikutnya.

Agar peramban IE v6 dapat menampilkan gambar PNG, saya memakai 'style sheet' khusus dengan JavaScript yang rumit. Keterangannya ada di PNG transparan untuk IE. Secara teknis ini semata-mata masalah IE, bukan masalah ImageMagick.

Menampilkan gambar di layar

Masalah tampilan juga bisa muncul saat gambar ditampilkan di layar. Karena itu saya menyarankan perintah seperti berikut, yang menghamparkan pola 'checkerboard' (papan catur) di bawah gambar untuk menonjolkan piksel transparan dan semitransparan di dalamnya.

   magick composite -compose Dst_Over -tile pattern:checkerboard image.png x:

[IM Output]

Gambar yang ditampilkan pada contoh di atas adalah gambar uji berformat PNG khusus yang dibangkitkan dengan sebuah skrip shell. Biasanya perintah itu mengeluarkan hasilnya ke layar Anda, bukan ke halaman web seperti ini.

Kalau diperhatikan baik-baik, pola papan catur terlihat menembus warna-warna semitransparan. Meski begitu, gambar itu secara keseluruhan sepenuhnya opak. Jadi, teknik ini semestinya bekerja pada semua layar, peramban web, dan penampil gambar.

Sejak IM v6.0.2, program "magick display" melakukan sesuatu yang serupa secara otomatis. Namun, tampaknya program itu tidak memperlakukan gambar bertabel warna (yaitu GIF) dengan cara ini. Memakai format gambar keluaran "x:" (seperti di atas) membuat gambar ditampilkan langsung ke layar tanpa perlu disimpan. Lihat Menampilkan gambar langsung di layar untuk keterangan lebih lanjut.

Penggunaan font

Font yang saya pakai dalam contoh-contoh ini berasal dari koleksi kecil font TrueType yang saya temukan selama bertahun-tahun dan saya simpan untuk keperluan sendiri. Sebagian di antaranya berhak cipta, jadi tidak bisa saya publikasikan secara daring.

Anda dipersilakan menggantinya dengan font lain yang tersedia. Contoh-contoh ini semestinya tetap bekerja (mungkin dengan sedikit perubahan ukuran gambar) dengan font apa pun yang sesuai dan tersedia di sistem Anda. Font "Arial" dari Microsoft, atau bahkan "Times-BoldItalic", semestinya bekerja di kebanyakan sistem.

Untuk melihat font apa saja yang tersedia bagi versi IM yang Anda pasang, jalankan perintah berikut...

   magick -list font

PERINGATAN: Bila font yang diminta tidak ditemukan, dulu ImageMagick diam-diam menggantinya dengan font bawaan, biasanya Arial atau Times. Sekarang pun masih begitu, tetapi kini peringatan diberikan. Jadi, uji dulu fontnya untuk memastikan itu font yang dimaksud, bukan font bawaan.

Di sistem Linux saya, saya memakai skrip Perl khusus, "**imagick_type_gen**", untuk membangkitkan file "type.xml" yang disimpan di subdirektori ".magick" dalam direktori rumah saya. ImageMagick memakai file itu, yang berisi daftar font dalam format XML, untuk menemukan font. Skrip tersebut me-"locate" (jalankan "updatedb" dulu bila font baru saja ditambahkan) sekaligus memerikan semua font yang tersedia di sistem saya. Dengan konfigurasi ini, saya cukup menyebutkan nama font yang ingin dipakai, bukan path lengkap ke file font tertentu.

Sebagai contoh...

   # Alih-alih memakai perintah...
   magick -font $HOME/lib/font/truetype/favorite/candice.ttf \
           -pointsize 72 label:Anthony  anthony.gif

   # saya bisa memakai label font yang lebih sederhana...
   magick -font Candice -pointsize 72 label:Anthony  anthony.gif

Sebelum IM v6.1.2-3, file "type.xml" bernama "type.mgk". Perhatikan ini bila Anda memakai IM versi yang lebih lama.

Font yang dipakai dalam contoh-contoh IM ini didaftar di Contoh montage font. Favorit pribadi saya adalah Candice, jadi font itu cukup sering muncul.

Kalau Anda juga menyukai font 'Candice', atau font lain yang saya pakai, ambil saja dari Free Fonts atau 1001 Fonts .com.

Pembaruan halaman contoh

Halaman contoh ini berada dalam siklus perbaikan yang terus berjalan. Umumnya saya berhenti menambah isinya untuk waktu yang lama, ketika minat saya beralih ke hal lain.

Contoh-contoh ini sering dibangun ulang memakai rilis beta IM terbaru, sehingga saya bisa melihat perubahan dan bug yang mungkin muncul di tiap versi IM sebelum dirilis umum. Namun, gambar contoh yang ditampilkan adalah apa yang dihasilkan perintah IM tersebut di sistem saya. Kalau hasilnya berbeda, kemungkinan besar IM yang Anda pasang versinya jauh lebih lama (berikut bug-bug lamanya), atau tidak terpasang dengan benar.

Perlu dicatat, mengirimi saya email atau membahas suatu sisi ImageMagick di forum diskusi umumnya berujung pada contoh baru, bahkan bagian baru, yang ditambahkan ke contoh-contoh ini. Makin banyak diskusinya, makin baik contohnya.

Kalau sedang mengerjakan sesuatu yang menarik dengan IM, silakan bagikan, dan izinkan saya menyajikan contoh teknik Anda kepada komunitas IM yang lain. Beberapa lompatan terbesar dalam penggunaan IM justru datang dari pengguna seperti Anda.

Ucapan terima kasih khusus

Terima kasih khusus saya sampaikan kepada Cristy, yang tak kenal lelah menghabiskan berbulan-bulan untuk memutakhirkan, memperbaiki bug, dan meladeni usulan-usulan saya yang nyeleneh... terutama usulan besar saya soal pemrosesan baris perintah, tanda kurung, operator urutan gambar, dan pemrosesan animasi GIF.

Ia telah melakukan pekerjaan yang luar biasa dengan menjadikan Versi 7 program pemrosesan gambar baris perintah terbaik dan tercanggih yang tersedia. Meski kebanyakan pengguna tidak akan menunjukkan penghargaan atas hal itu, saya sungguh menghargai usaha yang ia curahkan ke IM.

Saya juga ingin berterima kasih kepada Gabe Schaffer, yang sangat membantu dalam diskusi seputar format dan pustaka JPEG, operator matriks affine, serta Magick Vector Graphics secara umum.

Dan kepada Glenn Randers-Pehrson, yang menulis modul coder PNG dan menaruh minat pada kuantisasi warna serta dithering. Dialah yang pertama menambahkan dithering 'halftone' ke IM, yang kemudian saya revisi dan kembangkan lebih jauh untuk menambahkan dither baru ke file konfigurasi ordered dither.

Dan akhirnya, saya ingin berterima kasih kepada sekian banyak orang dengan masalah, usulan, dan pemecahannya, yang umumnya berkeliaran di Forum Pengguna IM. Banyak di antaranya kini namanya tercantum sebagai penyumbang gagasan dan usulan di sepanjang IM Examples.

Saya juga ingin berterima kasih kepada orang-orang yang rutin menjawab pertanyaan di forum, seperti 'Bonzo' dan situsnya RubbleWebs, yang memerinci pemakaian perintah IM dari skrip PHP. Juga 'scri8e' dan situsnya, Moons Stars, untuk penanganan kilau dan bintang. Terima kasih juga kepada Pete 'el_supremo'

Terima kasih khusus saya sampaikan kepada Fred Weinhaus, peneliti dari masa awal pemrosesan gambar, yang sangat membantu pada implementasi awal General Image Distortion Operator. Skrip ImageMagick karya Fred dapat dilihat di Fred's ImageMagick Site, sering kali sebagai bukti konsep bagi penambahan fitur IM di masa depan.

Juga kepada Nicolas Robidoux, ahli pemrosesan gambar digital, yang mengerjakan ulang Elliptical Weighted Average Resampling sehingga keluaran General Image Distortion menjadi jauh lebih baik.

Dan akhirnya kepada sekian banyak pengguna ImageMagick yang mengizinkan orang lain melihat perintah IM yang mereka pakai sebagai bagian dari suatu proyek, entah di forum maupun di web. Kesediaan dan keterbukaan Anda semua untuk berbagi temuan patut dipuji.

Nah, cukuplah "Yadda, yadda, yadda" ini. Mari kita lihat beberapa contohnya.