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

Contoh penggunaan ImageMagick -- montage, larik gambar

Kata pengantar dan indeks contoh penggunaan ImageMagick
Montage, pengantar dan gambaran umum

Kegunaan asli "magick montage" adalah menghasilkan tabel thumbnail gambar, yaitu untuk merujuk thumbnail dari koleksi gambar yang besar, terutama foto. Dan meskipun montage masih dapat dipakai untuk keperluan itu, ia juga dapat melakukan jauh lebih banyak. Halaman ini menelaah apa saja yang dapat dilakukan dengan montage, dan bagaimana memakainya pada gambar Anda sendiri.


Montage, pengantar

Perintah "magick montage" dirancang untuk menghasilkan larik gambar thumbnail. Semacam lembar contoh cetak dari sebuah koleksi gambar yang besar. Bawaan "magick montage" tanpa opsi apa pun sangatlah polos: kotak penampungnya cukup besar, tanpa frame, label, atau bayangan.

  magick montage balloon.gif medical.gif present.gif shading.gif  montage.jpg

[IM Output]

Geometry - ukuran tile dan pengubahan ukuran gambar

Pengaturan (setting) "-geometry" adalah kendali terpenting dari "magick montage". Pengaturan ini menentukan ukuran masing-masing gambar thumbnail, dan jarak di antaranya. Bagian ukuran dari geometry dipakai sebagai argumen bagi operator Resize, lengkap dengan semua flag khususnya. Bagian posisi dari opsi ini ditafsirkan sebagai besarnya ruang border yang disisakan di sekeliling gambar, sehingga memperkecilnya akan memperkecil pula celah di antara gambar. Pengaturan "-geometry" bawaan adalah '120x120>+4+3', yang berarti memuat gambar apa pun yang diberikan ke dalam kotak berukuran 120x120 piksel. Bila gambar lebih besar, gambar diperkecil, tetapi gambar yang lebih kecil tidak diubah ukurannya (sesuai flag hanya perkecil yang lebih besar ('>')). Ukuran 'tile' lalu ditetapkan sebesar dimensi terbesar dari semua gambar yang telah diubah ukurannya, dan ukuran yang benar-benar ditentukan. Artinya, Anda tidak akan pernah memperoleh ukuran tile yang lebih kecil daripada ukuran "-geometry" yang ditentukan. Ukuran tile yang sangat besar pada contoh sebelumnya dapat dihilangkan dengan memodifikasi bawaan "-geometry". Misalnya, dengan membuang komponen 'ukuran', tidak ada gambar yang diubah ukurannya, dan ukuran 'tile' ditetapkan sebesar dimensi terbesar dari semua gambar yang diberikan. Sebagai contoh, di sini saya meminta montage menyusun tile dengan gambar terbesar yang diberikan, dengan celah kecil di antara tile. Ini adalah pengaturan yang sangat khas dipakai ketika semua gambar masukan berukuran kecil dan kurang lebih sama besar.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -geometry +2+2   montage_geom.jpg

[IM Output]

Sebagai contoh, di sini saya mengganti salah satu gambar dengan gambar 'logo' yang lebih besar, tetapi menyetel pengaturan resize ke '48x48' agar gambar yang lebih kecil maupun yang lebih besar sama-sama diubah ukurannya.

  magick montage balloon.gif medical.gif present.gif logo: \
          -geometry 48x48+2+2   montage_geom_size.jpg

[IM Output]

Dan di sini saya kembali membatasi pengubahan ukuran hanya pada gambar yang lebih besar daripada ukuran tile yang ditentukan.

  magick montage balloon.gif medical.gif present.gif logo: \
          -geometry 48x48\>+2+2   montage_geom_larger.jpg

[IM Output]

Seperti yang terlihat, jarak antar-gambar tampak lebih besar daripada jarak 2 piksel yang diminta. Padahal sebenarnya tidak demikian. Tile tetap terpisah sejauh 2 piksel, hanya saja gambarnya sendiri tidak memenuhi ukuran tile 48x48 yang diminta. Gambar 'logo' tetap diubah ukurannya agar muat ke dalam tile 48x48 piksel. Jika pengubahan ukuran sama sekali tidak diinginkan, tentukan saja jarak antar-tile. Cara lain, gunakan ukuran khusus seperti '1x1<' yang memberi tahu IM untuk hanya mengubah ukuran gambar yang lebih kecil ke ukuran yang diberikan. Karena tidak ada gambar yang bisa lebih kecil dari 1 piksel, tidak ada pula gambar yang akan diubah ukurannya. Dengan begitu ukuran tile kembali menjadi dimensi terbesar dari semua gambar di halaman itu. Lihat Geometry nol, perlu kehati-hatian untuk alasan mengapa Anda mungkin ingin melakukan ini.

Geometry - jarak antar-tile

Bagian posisi dari pengaturan "-geometry" akan menambahkan ruang di antara masing-masing 'tile', dengan menambahkan border sebesar dimensi tersebut di sekeliling tile sebelum menyambungkannya menjadi satu. Artinya, untuk pengaturan "-geometry" bawaan '+4+3', tile akan berjarak 4 piksel dari tepi kiri dan kanan gambar akhir, dan memiliki jarak horizontal 8 piksel (dua kali ukuran yang diberikan) di antara tile. Hal yang sama berlaku untuk jarak vertikal. Perhatikan bahwa jarak antar-tile ketika semua gambar diubah ukurannya (contoh kedua dari belakang) dua kali lipat dari ruang di sekeliling tepinya.

Kontrol tata letak tile

Opsi terpenting berikutnya dalam "magick montage" adalah pengaturan "-tile". Pengaturan ini memberi tahu montage batasan apa yang Anda inginkan atas cara gambar-gambar ditata sebagai tile pada hasil akhir. Pada ImageMagick versi 6, "magick montage" akan menebak secara cerdas cara terbaik menyusun sejumlah gambar sebagai tile, bila Anda tidak memberi petunjuk "-tile" sama sekali. Namun montage mengasumsikan bahwa gambar yang disusun kurang lebih berbentuk persegi, karena ia tidak melihat rasio aspek gambar saat menentukan penyusunan tile yang dipakai.

  magick montage font_1.gif      -geometry 16x16+1+1  tile_1.gif
  magick montage font_[12].gif   -geometry 16x16+1+1  tile_2.gif
  magick montage font_[123].gif  -geometry 16x16+1+1  tile_3.gif
  magick montage font_[1-4].gif  -geometry 16x16+1+1  tile_4.gif
  magick montage font_[1-5].gif  -geometry 16x16+1+1  tile_5.gif
  magick montage font_[1-6].gif  -geometry 16x16+1+1  tile_6.gif
  magick montage font_[1-7].gif  -geometry 16x16+1+1  tile_7.gif
  magick montage font_[1-8].gif  -geometry 16x16+1+1  tile_8.gif
  magick montage font_[1-9].gif  -geometry 16x16+1+1  tile_9.gif
  magick montage font_[0-9].gif  -geometry 16x16+1+1  tile_0.gif

[IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output]

| Sintaksis "[1-5]" yang aneh itu adalah singkatan shell UNIX, yang diperluas menjadi daftar nama file. Perintah "magick montage" sendiri tidak pernah melihat karakter-karakter ini, hanya daftar file hasil perluasannya.
ImageMagick cukup pandai menentukan pengaturan "-tile" yang tepat untuk sejumlah gambar masukan tertentu. Berikut tabel jumlah gambar masukan dan pengaturan tile yang akan dipakai IM untuk menata gambar-gambar itu. | Jumlah gambar | Pengaturan tile
1 | 1x1
2 | 2x1
3 | 3x1
4 | 2x2
5 - 6 | 3x2
7 - 8 | 4x2
| | Jumlah gambar | Pengaturan tile
9 | 3x3
10 - 12 | 4x3
13 - 15 | 5x3
16 - 20 | 5x4
21 - 24 | 6x4
25 | 5x5
| | Jumlah gambar | Pengaturan tile
26 - 30 | 6x5
31 - 36 | 7x5
31 - 35 | 7x5
36 | 6x6
37 - 42 | 7x6
43 - 48 | 8x6
Namun perhatikan bahwa IM tidak akan otomatis memilih pengaturan tile 6x3 yang 'pas persis' untuk 18 gambar, ataupun pengaturan 7x4 untuk 28 gambar. Meski demikian, bila Anda menentukan pengaturan "-tile" tertentu, montage akan selalu membuat gambar yang cukup besar untuk memuat sebanyak itu 'tile'.

  magick montage font_[1-7].gif  -tile 9x1  -geometry 16x16+1+1  tile_9x1.gif
  magick montage font_[1-7].gif  -tile 4x3  -geometry 16x16+1+1  tile_4x3.gif
  magick montage font_[1-7].gif  -tile 3x3  -geometry 16x16+1+1  tile_3x3.gif
  magick montage font_1.gif      -tile 2x3  -geometry 16x16+1+1  tile_2x3.gif

[IM Output] [IM Output] [IM Output] [IM Output]

Seperti yang terlihat, montage membuat gambar yang cukup besar untuk memuat jumlah tile yang ditentukan, tidak peduli berapa banyak gambar yang tersedia untuk mengisi ruang tile yang diminta, entah 7 gambar atau hanya 1 gambar. Montage hanya mengisi ruang itu baris demi baris; saat ini tidak ada opsi untuk mengisi ruang tile kolom demi kolom. Sebelum IM v6.1, montage otomatis memangkas ruang berlebih bila jumlah gambar tidak memakai ruang itu. Dengan begitu, pengaturan seperti pada gambar "9x1" yang pertama akan dipangkas menjadi gambar tile "7x1". Karena itu, pengguna montage di masa lalu sering memakai angka besar seperti "999x1" untuk menghasilkan satu baris gambar. Kini argumen semacam itu akan menghasilkan gambar yang sangat panjang, dan bisa memakan waktu lama bagi IM untuk menyelesaikannya. Karena itu... Hindari pemakaian angka tile yang sangat besar pada montage IM!
Masalah ruang berlebih dan gambar berganda, terutama bila jumlah gambar masukan tidak diketahui, dapat dihindari dengan membuang angka baris atau angka kolom dari pengaturan "-tile". Angka yang hilang itu dianggap montage sebagai variabel, dan montage hanya akan membuat ruang tile secukupnya untuk memuat SEMUA gambar masukan, sehingga menghasilkan satu gambar saja, tidak pernah beberapa gambar.
  magick montage font_[1-7].gif  -tile x1  -geometry 16x16+1+1  tile_x1.gif
  magick montage font_[1-7].gif  -tile x2  -geometry 16x16+1+1  tile_x2.gif
  magick montage font_[1-7].gif  -tile x4  -geometry 16x16+1+1  tile_x4.gif
  magick montage font_[1-7].gif  -tile 4x  -geometry 16x16+1+1  tile_4x.gif
  magick montage font_[1-7].gif  -tile 5x  -geometry 16x16+1+1  tile_5x.gif
  magick montage font_[1-7].gif  -tile 9x  -geometry 16x16+1+1  tile_9x.gif

[IM Output] [IM Output] [IM Output] [IM Output] [IM Output] [IM Output]

Inilah pemakaian pengaturan "-tile" yang lebih khas, karena cara ini memastikan ukuran montage benar sekaligus tetap memberi sedikit kendali dalam menentukan ukuran larik akhirnya. Perhatikan gambar terakhir di atas, tempat kita meminta 9 kolom gambar. IM tetap menghasilkan 9 kolom yang diminta, meskipun gambar yang diberikan kurang dari 9. Sebaliknya, gambar pertama (satu baris yang diminta) panjangnya persis pas untuk memuat semua gambar. Jika gambar masukan Anda lebih banyak daripada yang dapat disusun montage ke dalam ruang yang diberikan oleh pengaturan "-tile", montage dapat menghasilkan beberapa gambar, entah dengan menambahkan nomor urut gambar pada nama file, atau dengan membuat semacam animasi GIF. Lihat Menulis banyak gambar untuk rinciannya. Sebagai contoh, di sini saya meminta montage menyimpan gambar terpisah untuk setiap halaman yang dihasilkan, dengan memberikan '%d' bagi nomor frame/adegan/halaman pada tiap nama file gambar.

  magick montage  font_*.gif  -tile 4x1  -geometry +2+2  multi_%d.gif

[IM Output] [IM Output] [IM Output]

Dekorasi frame

Bagian terbaik dari memakai montage untuk menata gambar adalah tersedianya banyak kendali tambahan untuk menambahkan 'hiasan' di sekeliling setiap gambar. Sebagai contoh, gambar yang ditampilkan dapat dipertegas dengan menambahkan "-frame" di sekeliling tiap gambar.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -frame 5  -geometry +5+5   frame.jpg

[IM Output]

Opsi ini tidak sama dengan opsi bernama sama pada "magick" (lihat contoh Menambahkan frame 3D). Opsi frame montage akan otomatis menentukan nilai bawaan bagi bevel dalam dan bevel luar frame. Karena itu hanya diperlukan satu angka argumen.

Dekorasi border

Sekitar IM v6.1.0, "-border" menjadi opsi dekoratif baru pada montage. Kini opsi itu menambahkan 'padding' ekstra di sekeliling setiap gambar, setelah gambar diubah ukurannya sesuai pengaturan "-geometry".

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -border 5 -geometry +5+5   border.jpg

[IM Output]

| Dekorasi "-border" saat ini tidak berfungsi bila dekorasi frame juga diterapkan.
| Sebelum IM v6.1.0 (kira-kira)-border diterapkan pada gambar tepat di titik tempat opsi itu muncul pada baris perintah "magick montage", persis seperti pada "magick".

Artinya, border ditambahkan ke gambar jauh sebelum gambar diubah ukurannya (menurut "-geometry"), sehingga lebar border di sekeliling tiap gambar berbeda-beda tergantung ukuran gambar pada titik itu. Justru untuk menghilangkan ketidakkonsistenan inilah -border menjadi pengaturan khusus montage.

Dekorasi bayangan

Menambahkan bayangan bersama frame juga cukup bagus.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -frame 5  -shadow  -geometry +5+5   frame_shadow.jpg

[IM Output]

Tentu saja Anda sebenarnya tidak memerlukan frame untuk menghasilkan bayangan gambar

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -shadow  -geometry +5+5  -background lightblue \
          shadow_noframe.jpg

[IM Output]

Sejak IM v6.3.1, ketika 'soft shadow' diimplementasikan, bentuk bayangan kini mengikuti transparansi gambar yang ditampilkan! |

  magick montage font_1.gif  font_7.gif  font_2.gif  font_0.gif \
          -tile x1  -shadow  -geometry +3+5 -background none \
          shadow_shaped.png

[IM Output]
Seperti yang terlihat, bayangan yang dipakai montage sebenarnya adalah warna semitransparan, sehingga latar belakang ikut memengaruhi warna akhirnya. Artinya, bila Anda membuat montage dengan latar belakang bertekstur, atau memakai latar belakang transparan lalu menimpakannya, bayangan akan berperilaku sebagaimana mestinya. Tentu saja Anda perlu memakai format gambar yang mampu menangani warna semitransparan, seperti PNG. Ingat, karena transparansi boolean GIF, format file gambar GIF tidak dapat dipakai untuk keperluan ini. Perhatikan bahwa bayangan tidak peduli pada jarak "-geometry" antar-gambar. Karena itu, bila gambar terlalu berdekatan, bayangan gambar sebelumnya dapat tertutupi oleh gambar berikutnya. Sebagai contoh...

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -tile x1  -shadow  -geometry +1+1  -background none \
          shadow_spacing.png

[IM Output]

Karena itu disarankan menyediakan jarak "-geometry" yang memadai saat memakai bayangan. Agar bayangan tidak terlalu 'terpotong di tepi', opsi "-shadow" menambahkan 4 piksel ruang tepi ekstra pada tepi kanan dan bawah gambar akhir. Ini di luar jarak "-geometry" biasa yang diberikan. Namun seperti yang terlihat di atas, ruang itu tidak selalu cukup. Saat ini montage juga tidak menyediakan kendali atas offset, warna, atau 'kelembutan' bayangan yang dihasilkan (setidaknya belum), tetapi kendali semacam itu memang juga tidak ada pada bayangan persegi keras yang disediakan montage versi lama.

Memberi label pada gambar montage

Montage juga dapat diminta memberi label pada gambar dengan nama file sumbernya, meskipun frame gambar mungkin perlu diubah ukurannya, sebab kalau tidak label bisa tidak muat dan teksnya terpotong. Dalam hal ini kita menambahkan "60x60>" pada string geometry, yang memberi tahu IM untuk memperkecil gambar yang lebih besar agar muat ke ruang itu, tetapi tidak memperbesar gambar yang lebih kecil. Inilah pemakaian montage yang barangkali paling khas.

  magick montage -label '%f'  balloon.gif medical.gif rose: present.gif shading.gif \
          -tile x1  -frame 5  -geometry '60x60+4+4>'  label_fname.jpg

[IM Output]

'%f' adalah karakter format khusus, yang dapat menarik berbagai rincian tentang gambar yang ada di memori. Lihat Image Property Escapes untuk rincian informasi lain yang dapat diambil dari gambar. Anda tidak harus memakai "-frame" saat memberi label pada thumbnail. Label tidak diberi bayangan, sehingga tetap jelas terbaca.

  montage -label '%f'  balloon.gif medical.gif logo: present.gif shading.gif \
          -tile x1 -shadow -geometry '60x60+2+2>'  label_shadow.jpg

[IM Output]

Dan sejak IM v 6.2.1, gambar kini dapat diberi label ulang setelah dibaca, dengan operator atribut gambar "-set". Mari kita pakai operator "-set" untuk menambahkan lebih banyak informasi tentang gambar. Dan juga beberapa pengaturan montage lainnya...

  magick montage balloon.gif medical.gif logo: present.gif shading.gif \
          -tile x1  -geometry '90x32+2+2>'  -pointsize 10 \
          -set label '%f\n%wx%h'   -background SkyBlue   label_fname3.jpg

[IM Output]

Seperti yang kita tunjukkan pada contoh-contoh di atas, pengaturan "-label" dapat dipakai untuk menentukan label bawaan sebuah gambar saat gambar dibaca, atau gambar dapat diberi label ulang setelahnya dengan operator "-set". Perhatikan bahwa '%wx%h memberikan lebar dan tinggi piksel gambar saat ini sebagaimana adanya di memori. Bila ukuran gambar diubah, misalnya sewaktu masukan, nilai ini bisa berbeda dari ukuran gambar di disk (atau ukuran saat pembuatan). Gunakan '%[width]x%[height]' bila yang Anda inginkan adalah ukuran pikselnya di memori.
Gambar juga dapat diberi label berbeda-beda dengan menyetel label masing-masing gambar. Kedua opsi itu bisa dipakai, meskipun Anda perlu memakai tanda kurung untuk membatasi gambar mana saja yang dikenai operator "-set". Di sini misalnya kita memakai kedua bentuk pelabelan. Tetapi mari kita tambahkan pula judul pada montage-nya, sekadar karena kita bisa...
  magick montage -label Balloon   balloon.gif  \
          -label Medical   medical.gif  \
          \( present.gif  -set label Present  \) \
          \( shading.gif  -set label Shading  \) \
          -tile x1  -frame 5  -geometry '60x60+2+2>' \
          -title 'My Images'     titled.jpg

[IM Output]

Pelabelan gambar untuk gambar berikutnya dapat dimatikan dengan "-label '' " atau "+label". Namun seperti yang akan Anda lihat nanti, kedua pengaturan ini tidak sepenuhnya sama. Hal yang sama berlaku bagi operasi label "-set" setelah pembacaan.

  magick montage             balloon.gif \
          -label 'My Image'  medical.gif \
          +label             present.gif \
          -label ' '         shading.gif \
          -tile x1  -frame 5  -geometry '60x60+2+2>'   labeling.jpg

[IM Output]

Gambar terakhir memperlihatkan bahwa dengan memakai spasi sebagai label gambar, Anda dapat membuat ruang label gambar tetapi membiarkannya kosong. Ini memunculkan satu pedoman praktis yang baik saat memakai montage...

Beri label pada semua gambar Anda, atau jangan sama sekali!

Anda tidak harus memberi label pada gambar selama operasi montage itu sendiri. Baik format MIFF maupun PNG dapat menyimpan label sebagai bagian dari format gambarnya. Montage otomatis memberi label pada setiap gambar yang dibaca yang sudah memuat label. Ini berlangsung otomatis dan tidak perlu ditentukan, dan saya telah memakai teknik ini untuk menghasilkan beberapa montage gambar yang sangat rumit. Sebagai contoh, larik montage pada contoh sudut annotate dibuat dengan teknik ini. Jika pelabelan otomatis ini tidak diinginkan, montage harus secara khusus diminta mengatur ulang semua label yang dibaca atau dibuat menjadi string kosong, dengan "-label ''" sebelum gambar dibaca. Atau metadata label itu bisa langsung dihapus dengan "+set label" setelah gambar dibaca. Di sinilah "+label" berbeda dari memakai label kosong ("-label ''"). Yang pertama mengembalikan perilaku bawaan ke pemakaian otomatis metadata label apa pun yang mungkin dimiliki gambar yang dibaca, sedangkan yang kedua mengganti label dengan string kosong, yang efektifnya menghapus label. Label asli gambar juga dapat dipertahankan dengan "-label '%l'", yang berguna sebagai opsi pelabelan NO-OP dalam skrip pemrosesan gambar. Perhatikan bahwa "-set" tidak dapat memulihkan label asli sebuah gambar setelah label itu diubah atau dihapus, baik dengan "-label" maupun "-set"

  magick -label 'medical'  medical.gif  label_medical.png
  magick -label 'logo'     logo:        label_logo.png
  magick -label 'rose'     rose:       label_rose.png

  magick montage    label_medical.png \
          -label '' label_logo.png    \
          +label    label_rose.png    \
          -tile x1  -frame 5  -geometry '60x60+2+2>' label_control.jpg

[IM Output]

Pada contoh di atas terlihat bahwa gambar pertama diberi label memakai label yang disertakan pada gambar itu sendiri. Gambar kedua kehilangan label yang menyertainya karena pengaturan "-label '' ", sedangkan gambar ketiga juga memakai label gambarnya karena kita mematikan pengaturan label dengan "+label".

Menggunakan metadata gambar yang tersimpan

Saat menghasilkan gambar untuk nantinya dipakai montage, penting mengetahui jenis metadata gambar apa yang dapat disimpan oleh suatu format file gambar. Sebagai contoh, hanya format file gambar PNG dan MIFF yang benar-benar dapat menyimpan metadata 'label' di dalam file gambar yang disimpannya...

  magick -label 'GIF'  balloon.gif  label.gif
  magick -label 'JPG'  medical.gif  label.jpg
  magick -label 'PNG'  present.gif  label.png
  magick -label 'MIFF' shading.gif  label.miff

  montage label.gif label.jpg label.png label.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' label_files.jpg
  rm label.*

[IM Output]

Namun semua format file yang umum memungkinkan pemakaian metadata 'comment', yang dapat dipakai dengan memberikan argumen '%c' pada "-label".

  magick -comment 'GIF'  balloon.gif  comment.gif
  magick -comment 'JPG'  medical.gif  comment.jpg
  magick -comment 'PNG'  present.gif  comment.png
  magick -comment 'MIFF' shading.gif  comment.miff

  magick montage -label '%c' comment.gif comment.jpg comment.png comment.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' comment_files.jpg
  rm comment.*

[IM Output]

Cara ini sering lebih berguna untuk foto yang disimpan dalam format file JPEG, meskipun komentar gambar JPEG umumnya terlalu panjang (sering berupa paragraf utuh yang menjelaskan gambar) untuk dipakai sebagai label montage, karena teksnya tidak akan dilipat per kata (lihat Montage foto polaroid untuk metode pelabelan alternatif yang memakai metadata 'comment' gambar). Banyak program lain juga otomatis menambahkan label dan komentar 'dibuat oleh' pada gambar yang mereka simpan (MENJIJIKKAN), jadi sebaiknya sedikit berhati-hati. Program GIMP khususnya gemar menambahkan komentar dan label semacam itu setiap kali Anda menyimpan gambar, kecuali Anda memintanya tidak melakukan itu. Perhatikan bahwa IM umumnya tidak dipakai untuk menambahkan komentar ke file JPEG yang disimpan (karena kompresi lossy JPEG), kecuali file itu memang sedang diproses untuk alasan lain. Sebagai gantinya, komentar biasanya ditambahkan dengan metode lain agar data gambar tidak perlu dibaca dan ditulis ulang, yang akan menurunkan mutu file gambar JPEG yang sedang ditambahi komentar itu. Lihat opsi pemrosesan JPEG lossless untuk beberapa metode semacam itu. Penting juga dicatat bahwa pelabelan (dan 'comment' gambar) bukanlah hal yang khas montage. Montage hanya memanfaatkan label gambar secara otomatis bila label itu ada. Label dan komentar melekat pada gambar dan pada format filenya masing-masing, dan bukan sesuatu yang khas montage ataupun khas IM. Format file PNG dan MIFF juga memungkinkan pemakaian metadata 'caption' yang lebih jarang dipakai.

  magick balloon.gif -set caption 'GIF'  caption.gif
  magick medical.gif -set caption 'JPG'  caption.jpg
  magick present.gif -set caption 'PNG'  caption.png
  magick shading.gif -set caption 'MIFF' caption.miff

  magick montage -label '%[caption]' caption.gif caption.jpg caption.png caption.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' caption_files.jpg
  rm caption.*

[IM Output]

Sebenarnya kedua format file ini memungkinkan Anda menyimpan metadata properti gambar APA PUN yang mungkin ada pada gambar saat gambar itu disimpan!

  magick balloon.gif -set my_data 'GIF'  my_data.gif
  magick medical.gif -set my_data 'JPG'  my_data.jpg
  magick present.gif -set my_data 'PNG'  my_data.png
  magick shading.gif -set my_data 'MIFF' my_data.miff

  magick montage -label '%[my_data]' my_data.gif my_data.jpg my_data.png my_data.miff \
          -tile x1  -frame 5  -geometry '60x60+2+2>' my_data_files.jpg
  rm my_data.*

[IM Output]

Menyisakan celah dalam montage

Ruang ekstra di bagian bawah montage memang bisa disisakan lewat pemakaian pengaturan "-tile" yang cermat dan pengendalian jumlah gambar yang diberikan, tetapi menyisakan ruang tile kosong di tengah montage memerlukan gambar khusus. Gambar hasil "null:" didefinisikan justru untuk keperluan ini. Posisi tempat gambar itu muncul tidak akan menerima label apa pun (sekalipun label sudah ditentukan), dan juga tidak akan diberi 'hiasan' frame atau bayangan. Tile itu dibiarkan benar-benar kosong kecuali warna latar belakang (atau tekstur) dari kanvas gambar montage itu sendiri.

  magick montage -label 'Image' medical.gif null: present.gif \
          -tile x1  -frame 5  -geometry +2+2   montage_null.jpg

[IM Output]

Perhatikan bahwa bagi perintah IM lain, gambar "null:" diwakili sebagai gambar transparan berukuran satu piksel. Gambar ini juga dipakai sebagai 'gambar error' bagi opsi seperti "-crop" atau "-trim" yang operasinya bisa menghasilkan gambar 'nol' atau kosong. Gambar khusus ini tidak dapat disimpan lalu kemudian dipakai untuk menyisakan celah; saat ini ia hanya 'istimewa' bila diberikan pada baris perintah "magick montage". | _Saat ini tidak ada cara untuk membuat gambar dalam montage membentang di beberapa baris atau kolom, seperti yang bisa dilakukan pada tabel HTML. Anda juga tidak dapat menghasilkan baris dan kolom berukuran bervariasi agar paling pas dengan larik gambar yang dihasilkan.

Jika Anda benar-benar memerlukan kemampuan semacam ini, aplikasi sejenis montage harus dikembangkan sendiri. Bila Anda memang mengembangkan sesuatu, silakan berkontribusi, dan kami akan mempertimbangkan untuk menggabungkannya ke aplikasi montage yang ada.

Beberapa solusi untuk ini mencakup memberi label dan frame pada thumbnail gambar sendiri, lalu memakai penyambungan gambar atau teknik pelapisan gambar yang lebih bebas bentuk.

_


Pengaturan montage lainnya Pengaturan "magick montage" yang saya tunjukkan di atas hanyalah kendali dasar montage. Masih banyak pengaturan lain yang mungkin ingin Anda pertimbangkan sesuai kebutuhan Anda sendiri. Pengaturan warna montage **-background** Warna di luar frame yang digambar. Warna ini sering disetel ke 'none' atau 'transparent' untuk dipakai di halaman web. Pengaturan -texture akan dipakai sebagai gantinya bila diberikan.
**-bordercolor** Warna isian di dalam frame untuk gambar, atau padding border apa pun. Area transparan mana pun pada gambar akan menjadi warna ini, kecuali bila dekorasi semacam itu tidak ditambahkan.
**-mattecolor** Warna yang dipakai sebagai warna frame. Perhatikan bahwa warna ini juga dibuat lebih terang dan lebih gelap agar frame tampak ber-bevel 3D. Jadi pengaturan ini sebenarnya mendefinisikan 5 warna. (Lihat juga Pembuatan frame gambar)
**-fill** Warna isian untuk label teks dan judul.
**-stroke** Warna stroke untuk label teks dan judul.
Pengaturan kontrol montage

**-tile** {_cols_}x{_rows_} Jumlah gambar mendatar dan menurun yang dipakai untuk mengisi satu gambar montage. Bila gambar yang dibaca atau dibuat lebih banyak daripada yang muat dalam satu gambar montage, beberapa gambar akan dibuat. (Lihat Kontrol tata letak tile di atas) **-title** {_string_} Menyetel judul di atas keseluruhan montage, memakai font yang sama (tetapi lebih besar) dengan yang dipakai untuk memberi label pada masing-masing gambar. **-frame** {_width_} Membuat frame di sekeliling kotak yang memuat gambar, memakai width yang diberikan (minimal 2, tetapi 5 atau 6 adalah nilai yang baik). Bila dipakai, transparansi apa pun pada gambar juga akan menjadi warna border. **-border** {_width_} Membuat border di sekeliling gambar, memakai width yang diberikan. Bila dipakai, transparansi apa pun pada gambar juga akan menjadi warna border. **-shadow** Menghasilkan bayangan dari frame. Perhatikan bahwa tidak ada argumen yang diperlukan maupun diharapkan. **-texture** {_filename_} Memakai tekstur yang diberikan (gambar yang disusun sebagai tile) untuk latar belakang, alih-alih warna tertentu. Lihat bagian Penanganan latar belakang dan transparansi di bawah untuk informasi lebih lanjut. **-geometry** {_W_}x{_H_}+{_X_}+{_Y_} Mengubah ukuran gambar setelah semuanya dibaca, sebelum montage menimpakannya ke kanvasnya. Opsi ini juga menentukan ukuran dan jarak antar-tile tempat gambar digambar. Bila ukuran tidak ditentukan, gambar tidak akan diubah ukurannya. **-gravity** {_direction_} bila gambar lebih kecil daripada frame, di bagian mana dari frame gambar itu ditempatkan. Secara bawaan gambar ditempatkan di tengah.

Selain yang di atas, tersedia pula semua pengaturan font yang dipahami operator pembuatan gambar "label:" (lihat Pembuat gambar label). Pengaturan ini dipakai untuk membuat label yang ditambahkan di bawah gambar yang ditampilkan. Termasuk di dalamnya pengaturan seperti "-font", "-pointsize" (diabaikan untuk "-title"), "-density", "-fill", "-stroke", dan "-strokewidth". Selama sebagian atau seluruh pengaturan di atas didefinisikan atau diatur ulang sebelum argumen 'nama file keluaran' terakhir, montage akan memakainya sesuai permintaan Anda. Menggunakan ulang pengaturan untuk pembacaan/pembuatan gambar Namun perhatikan bahwa banyak dari opsi ini juga dipakai untuk keperluan lain, entah dalam pembuatan gambar atau selama pemrosesan gambar. Tetapi berkat penanganan baris perintah 'lakukan sebagaimana terbaca' pada IM v6, hal itu sama sekali tidak menjadi masalah bagi perintah "magick montage". Artinya, Anda bebas memakai pengaturan opsi mana pun untuk membaca, membuat, atau memodifikasi gambar yang dibaca, lalu mengatur ulang pengaturan itu setelah semua gambar dibaca atau dibuat. Nilai pengaturan terakhirlah yang akan dipakai montage untuk pemrosesan akhirnya. Hal ini tidak berlaku pada IM sebelum versi 6, yang di dalamnya umumnya mustahil memisahkan pengaturan pembuatan gambar dari pengaturan montage tanpa menghasilkan gambar antara (seperti pada contoh Label gambar di atas). Berikut contoh praktis penggunaan ulang pengaturan. Saya ingin membuat tabel berisi sebagian font yang saya pakai di halaman-halaman contoh ini, lalu mengatur ulang pengaturannya ke nilai lain untuk pemrosesan akhir gambar oleh montage.

  magick montage -pointsize 24 -background Lavender \
          -font Candice      -label Candice      label:Abc-123 \
          -font Corsiva      -label Corsiva      label:Abc-123 \
          -font SheerBeauty  -label SheerBeauty  label:Abc-123 \
          -font Ravie        -label Ravie        label:Abc-123 \
          -font Arial        -label Arial        label:Abc-123 \
          -font ArialI       -label ArialI       label:Abc-123 \
          -font ArialB       -label ArialB       label:Abc-123 \
          -font ArialBk      -label ArialBk      label:Abc-123 \
          -font CourierNew   -label CourierNew   label:Abc-123 \
          -font LokiCola     -label LokiCola     label:Abc-123 \
          -font Gecko        -label Gecko        label:Abc-123 \
          -font Wedgie       -label Wedgie       label:Abc-123 \
          -font WebDings     -label WebDings     label:Abc-123 \
          -font WingDings    -label WingDings    label:Abc-123 \
          -font WingDings2   -label WingDings2   label:Abc-123 \
          -font Zymbols      -label Zymbols      label:Abc-123 \
          \
          -frame 5  -geometry +2+2   -font Arial -pointsize 12 \
          -background none  -bordercolor SkyBlue  -mattecolor DodgerBlue \
          montage_fonts.gif

[IM Output]

Perhatikan dua tahap pada perintah "magick montage" itu, yang saya tandai dengan jelas memakai satu baris tambahan yang nyaris kosong. Bagian pertama pada dasarnya persis seperti cara Anda mendefinisikan banyak gambar dengan perintah IM "magick" biasa, dan diproses dalam urutan 'lakukan sebagaimana terbaca' yang sama. Bagian kedua mendefinisikan semua pengaturan yang saya inginkan dipakai oleh perintah "magick montage" itu sendiri. Yaitu pembuatan frame, pengubahan ukuran gambar, font, dan warna yang ingin saya pakai pada gambar montage akhir. Saya secara khusus berhati-hati mengatur ulang pengaturan "-font" dan "-pointsize" untuk pelabelan di bawah gambar yang di-montage. Meskipun opsi "magick montage" dapat dipisahkan seperti ini, pengaturan montage sebenarnya boleh didefinisikan kapan saja pada baris perintah. Selama pengaturan itu tidak mengganggu opsi pembuatan dan pemrosesan gambar, dan tetap terdefinisi dengan benar saat ujung baris perintah tercapai, "magick montage" akan memakainya. SELINGAN: Anda mungkin ingin melihat skrip shell yang saya tulis untuk melakukan sesuatu yang mirip dengan di atas (dan yang bekerja dengan montage versi lebih lama) guna menampilkan sebuah direktori berisi font truetype (.ttf), bernama "**show_fonts**". Contoh skrip shell lainnya adalah "**show_colors**".

Perbedaan opsi montage dan magick

Meskipun "magick montage" umumnya membolehkan pemakaian pengaturan dan operator "magick" apa pun dalam membaca dan memproses gambar masukannya, ada beberapa perbedaan yang perlu ditegaskan. Operator dan pengaturan "magick" berikut berperilaku berbeda bila dipakai di dalam "magick montage".

**-tile** Pada "magick", pengaturan "-tile" menentukan gambar yang dipakai sebagai tekstur alih-alih memakai warna "-fill". Pada "magick montage", pengaturan itu menentukan cara menata 'tile' sel gambar satu per satu. Lihat Kontrol tata letak tile di atas untuk rinciannya. **-frame** Pada "magick", ini adalah operator untuk menambahkan border frame 3D di sekeliling gambar, dan memerlukan 4 argumen agar bekerja dengan benar (lihat contoh Frame pada convert). Lihat Dekorasi frame untuk rinciannya. **-border** Sekitar IM v6.1.0 operator ini menjadi opsi khusus montage. Karena itu, seperti opsi frame sebelumnya, ia hanya menerima satu angka sebagai argumen, bukan dua argumen seperti pada Border pada convert. Lihat Dekorasi border untuk rinciannya. **-shadow** Opsi "-shadow" pada "magick" menerima argumen yang dipakai untuk membuat bayangan lembut dan kabur yang dapat ditempatkan di bawah salinan kedua dari gambar aslinya. Namun pada "magick montage", ini hanya pengaturan boolean yang sekadar menyalakan dan mematikan kemampuan bayangan persegi. Lihat Dekorasi bayangan untuk rinciannya. **-geometry** Opsi "-geometry" pada "magick montage" sekadar disimpan untuk menyediakan ukuran gambar di dalam tiap sel montage akhir, dan jarak antar-sel. Pada "magick", opsi itu hanya mengubah ukuran gambar terakhir, dan menetapkan offset bagi komposisi gambar.

Jika Anda benar-benar perlu memakai bentuk "magick" dari opsi-opsi ini, gambar-gambarnya harus dipraproses dengan "magick" sebelum diteruskan ke "magick montage". Satu metode yang memakai file antara sudah diperagakan pada contoh Label gambar di atas. Metode lain adalah melakukan pemrosesan di "magick" lalu menyalurkan gambar berganda hasilnya lewat pipa ke "magick montage". Pemisahan ini mudah dilakukan bila Anda selalu menangani masukan gambar lebih dulu, lalu menyetel pengaturan khusus "magick montage" sesudahnya, seperti yang saya lakukan di semua contoh ini. Hal itu terlihat paling jelas pada contoh font terakhir di atas. Sebagai contoh, mari kita beri frame pada gambar kita memakai frame "magick", lalu beri frame sekali lagi memakai frame berlabel dari "magick montage".

  magick -label %f   balloon.gif medical.gif present.gif shading.gif \
          -mattecolor peru  -frame 10x5+3+0    miff:-  |\
     magick montage  -   -tile x1  -frame 5  -geometry '64x56+5+5>' double_frame.jpg

[IM Output]

Terlihat pula argumen tambahan yang dibutuhkan oleh bentuk "magick" dari operator "-frame".


Indeks direktori gambar

Peta gambar thumbnail HTML

Montage dirancang khusus untuk menghasilkan peta thumbnail gambar. Sebagai contoh, di sini saya membuat indeks direktori sumber gambar foto, yang memuat foto digital yang dipakai sebagai contoh di seluruh IM Examples. Klik gambar 'art' di bawah untuk melihat hasilnya. |

  magick montage -label '%t\n%[width]x%[height]' \
          -size 512x512 '../img_photos/*_orig.*[120x90]' -auto-orient \
          -geometry +5+5 -tile 5x  -frame 5  -shadow  photo_index.html


IM Examples
Photo Store

| Perhatikan pemakaian '%[width]x%[height]' alih-alih sekadar '%wx%h'. Ini penting karena gambar diubah ukurannya sewaktu dibaca. Yang pertama memberi label gambar dengan ukuran piksel aslinya sebagaimana ada di disk, sedangkan yang kedua memakai ukuran gambar setelah diubah. Hal ini gampang terlewat oleh pengguna.
Perintah ini menghasilkan tiga file...

photo_index.png Montage berisi semua thumbnail gambar
photo_index_map.shtml 'Image map' HTML untuk gambar thumbnail
photo_index.html Halaman indeks thumbnail HTML untuk World Wide Web.
Halaman ini juga memuat salinan image map sebelumnya.

Tentu saja Anda tidak harus menghasilkan file indeks HTML bila yang diinginkan hanyalah gambar indeksnya. Dalam hal itu, cukup ganti "photo_index.html" pada perintah di atas dengan gambar yang ingin dihasilkan. Perhatikan pemakaian escape properti gambar '%t' untuk "-label" gambar. Ini adalah nama file gambar tanpa komponen 'path' apa pun. Meski begitu, tautan HTML tetap memuat komponen 'path' yang sesuai sehingga gambar indeks dapat dibangun di direktori yang berbeda dari gambarnya sendiri. Gambar sumber "'*_orig.*'" pada contoh di atas diapit tanda kutip, sehingga perintah "magick montage" sendirilah yang memperluas '*', bukan shell baris perintah. Ini menghindari batas panjang baris perintah yang mungkin menyusahkan Anda. Saya juga melakukan sedikit pengubahan ukuran awal '[120x190]' sewaktu membaca gambar (lihat pengubah pembacaan gambar). Untuk gambar JPEG saya juga menentukan pengaturan "-size" yang lebih kecil agar pustaka JPEG dapat melakukan penskalaan awal yang sangat kasar, dan tidak membaca seluruh gambar ke memori. Bila ini tidak dilakukan, gambar JPEG yang sangat besar bisa menghabiskan memori dan siklus CPU dalam jumlah luar biasa padahal tidak benar-benar diperlukan. Saya juga membuang profil apa pun yang mungkin dimiliki gambar dengan "-strip". Untuk informasi lebih lanjut lihat Profil, stripping, dan penanganan JPEG dan Membaca gambar JPEG. Ingat bahwa opsi montage "-geometry" juga dapat menentukan pengaturan resize akhir, meskipun dalam kasus ini hal itu tidak diperlukan karena sudah saya lakukan selama proses pembacaan, jadi saya tidak menyetel 'ukuran' apa pun pada pengaturan itu. Terakhir, opsi "-tile" '5x' dipakai untuk memastikan semua gambar muncul dalam satu gambar; kalau tidak, "magick montage bisa menghasilkan file HTML berhalaman banyak yang tidak saling tertaut dengan benar. Semoga hal ini berubah kelak, meskipun pembuatan HTML bukanlah tujuan utama ImageMagick. Untuk cara lain menghasilkan thumbnail dan halaman indeks HTML, bacalah halaman contoh thumbnail.

Peta indeks HTML yang lebih kecil dengan gambar JPEG

Gambar indeks di atas menghasilkan gambar indeks berformat PNG. Format ini dipakai karena bersifat non-lossy, yang bisa penting ketika gambar yang diindeks memiliki warna yang sangat beragam. Format ini juga memungkinkan pemakaian fitur 'soft shadow' baru pada montage bila warna latar belakang disetel ke 'transparent' atau 'none'. IM yang sangat sangat tua akan menghasilkan gambar GIF untuk contoh di atas. Namun cara itu memberi pengurangan warna yang berat pada hasilnya, sebagai bagian dari keterbatasan formatnya. Format itu juga tidak membolehkan pemakaian 'soft shadow' semitransparan sebagaimana dibolehkan PNG. JPEG juga tidak membolehkan semitransparansi, tetapi itu bukan masalah bila Anda tidak memakai latar belakang transparan untuk gambarnya. Namun JPEG jauh lebih kecil daripada PNG, sehingga menyediakan cara untuk memangkas drastis ukuran gambar indeks, terutama untuk pemakaian web, dan tetap menangani rentang warna yang luas. Sayangnya keluaran HTML di atas hanya menghasilkan gambar berformat PNG, jadi Anda perlu bukan hanya mengonversi PNG itu ke JPEG dengan magick, tetapi juga melakukan sedikit pemrosesan tambahan untuk memperbaiki file HTML-nya. |

  magick montage -label '%t\n%[width]x%[height]' \
          -size 512x512 '../img_photos/*_orig.*[120x90]' -auto-orient \
          -geometry +5+5 -tile 5x  -frame 5  -shadow  photo_jpeg.html
  magick photo_jpeg.png photo_jpeg.jpg
  perl -i -lpe 's/src="photo_jpeg.png"/src="photo_jpeg.jpg"/' photo_jpeg.html
  rm -f  photo_jpeg.png  photo_jpeg_map.shtml


IM Examples
Photo Store

Perintah di atas agak rumit, jadi inilah yang sebenarnya terjadi...

  • Pertama saya menghasilkan indeks HTML thumbnail montage, seperti yang saya lakukan sebelumnya. Ini menghasilkan file: "photo_jpeg.html" dan "photo_jpeg.png"
  • Lalu saya mengonversi gambar PNG itu menjadi gambar JPEG yang lebih kecil dan lossy.
  • Kemudian saya memakai skrip 'perl' satu baris yang kecil untuk mengubah file HTML agar memakai gambar JPEG alih-alih PNG.
  • Dan terakhir saya menghapus gambar PNG itu, serta file peta SHTML yang tidak saya perlukan.

Dan simsalabim, kita punya indeks thumbnail yang memakai gambar JPEG yang sangat kecil sebagai gambar indeksnya. Berikut perbandingan ukuran file gambar indeks thumbnail itu...

[IM Text]

Artinya, gambar yang dipakai untuk indeks hanya sekitar 15% dari ukuran gambar PNG aslinya. Penghematan besar untuk halaman web berisi thumbnail yang harus diunduh! Gambar JPEG itu dapat dibuat lebih kecil lagi dengan pengaturan "-quality" yang lebih rendah, meskipun pengaturan bawaannya sudah memberi hasil yang sangat memadai. Opsi lain yang bisa dipakai antara lain "-sampling-factor 2x1" agar ukurannya makin kecil.

Gambar indeks visual (solusi tanpa montage)

Alternatif dari memakai montage adalah memakai format masukan "indeks visual" khusus... |

  magick 'vid:../img_photos/*_orig.*' vid_index.gif


Visual Index of
Photo Store

Dan format itu juga dapat menghasilkan file indeks HTML yang 'dapat diklik'. |

  magick 'vid:../img_photos/*_orig.*' vid_index.html


Visual HTML of
Photo Store

Jelas bahwa "VID:" memakai montage secara internal untuk menghasilkan larik indeksnya. Namun Anda tidak memiliki kendali yang sama seperti bila memakai montage secara langsung. Perhatikan bahwa indeks HTML VID membuat gambar thumbnail berformat PNG.

Montage foto polaroid

Dengan hadirnya transformasi polaroid yang kompleks, kini dimungkinkan menghasilkan gaya montage dan pengindeksan montage yang cukup berbeda. |

  magick montage -size 256x256 '../img_photos/*_orig.*' -auto-orient \
          -auto-orient -thumbnail 128x128 \
          -set caption '%t' -bordercolor AliceBlue -background grey20 \
          +polaroid \
          +set label   -background white  -geometry +1+1  -tile 4x \
          polaroid_index.html


Polaroid
Montage

Perhatikan bahwa karena saya memakai "+polaroid" untuk memberi frame dan label pada gambar, saya perlu mengubah ukuran gambar sendiri (memakai "-thumbnail"), dan memastikan "-background" serta "-label" gambar sudah diatur ulang sebelum benar-benar membuat larik indeks "magick montage". Namun transformasi polaroid cenderung mengaburkan teks saat 'lengkungan' ditambahkan ke gambar thumbnail. Meski begitu, hasil keseluruhan dapat diperbaiki dengan menghasilkan gambar polaroid pada ukuran yang lebih besar lalu memperkecil hasilnya 50%. Satu-satunya kelemahannya adalah efek 'bayangan' yang berkurang. |

  magick montage -size 400x400  '../img_photos/*_orig.*' \
          -auto-orient -thumbnail 200x200 \
          -set caption '%t' -bordercolor Lavender -background grey40 \
          -pointsize 9  -density 144x144  +polaroid  -resize 50% \
          +set label   -background white  -geometry +1+1  -tile 5x \
          polaroid_index2.html


Sharper
Polaroid
Montage

Montage mewah ini, bersama teknik lain yang ditunjukkan di atas, dipakai untuk membuat skrip yang menghasilkan indeks thumbnail montage di direktori "photo_store" yang sebenarnya. Lihat Indeks Photograph Store untuk hasil skrip ini.


Teknik khusus memakai montage

Montage berbasis kolom

Secara bawaan "magick montage" hanya dapat menempatkan gambar dalam urutan yang diberikan (biasanya urutan terurut) baris demi baris. Namun kadang Anda ingin menampilkannya dalam urutan kolom. Hal ini tidak dapat dilakukan dengan satu perintah, melainkan memerlukan pipeline berisi setidaknya dua perintah. Sebagai contoh, di sini saya menghasilkan satu halaman berisi tile 5x3 dengan dua montage. |

  magick montage font_*.gif  -tile 1x3  -geometry 16x16+1+1  miff:- |\
    magick montage -  -geometry +0+0 -tile 5x1  montage_columns.gif

[IM Output]
Perhatikan bahwa "magick montage" yang pertamalah yang membuat tile serta melakukan penetapan ukuran tile lewat geometry, pembuatan frame, pelabelan, dan pengaturan jarak yang diperlukan. Perintah itu lalu mengeluarkan satu gambar untuk tiap kolom tile. "magick montage" yang kedua kemudian sekadar merangkai kolom-kolom itu menjadi gambar 'halaman' tanpa menambahkan ruang lagi di antara kolom. Bila Anda hanya ingin satu gambar dengan jumlah kolom yang bervariasi, "magick montage" yang kedua dapat diganti dengan "magick" untuk merangkai tanpa menambahkan ruang ekstra atau 'halaman'. Sebagai contoh... |

  magick montage font_*.gif  -tile 1x3  -geometry 16x16+1+1  miff:- |\
    magick - +append montage_columns_2.gif

[IM Output]

Tile montage yang saling menimpa

Di forum pengguna IM, dalam sebuah diskusi antara Fred Weinhaus , alias fmw42 dan pengguna lain pooco , ditemukan bahwa bila ruang antar-tile (yang disetel pada pengaturan "-geometry") diberi angka negatif, area tile tempat gambar digambar sebenarnya dapat saling menimpa. Sebagai contoh, di sini kita memakai jarak antar-tile horizontal yang negatif untuk satu baris gambar.

  magick montage null:   font_*.gif   null: \
          -tile x1 -geometry -5+2  montage_overlap.jpg

[IM Output]

Memutar gambar akan membuat rangkaian yang saling menimpa itu makin menarik...

  magick montage null: font_*.gif null: -background none -rotate 30 \
          -background white -tile x1 -geometry -8+2  montage_rot_overlap.jpg

[IM Output]

Perhatikan bahwa saya perlu menambahkan gambar penjarak "null:" khusus di awal dan akhir baris gambar agar gambar tidak meluber dari kanvas yang dihitung dan dihasilkan "magick montage". Ini membuka beberapa kemungkinan yang menarik. Sebagai contoh, Anda dapat menghasilkan baris thumbnail yang saling menimpa yang sangat menarik dengan memanfaatkan transformasi polaroid yang diputar secara acak.

  magick montage -size 400x400 null: ../img_photos/[a-m]*_orig.* null: \
          -auto-orient  -thumbnail 200x200 \
          -bordercolor Lavender -background black +polaroid -resize 30% \
          -gravity center -background none -extent 80x80 \
          -background SkyBlue -geometry -10+2  -tile x1  polaroid_overlap.jpg

[IM Output]

Pemakaian extent di atas berguna untuk menghilangkan keacakan ukuran gambar yang bisa dihasilkan "+polaroid" pada tiap 'jalannya', sehingga memberi kendali lebih atas jarak dan tumpang tindih akhir antar-gambar. Hasilnya sangat menarik, meskipun sebenarnya ini pantas digolongkan sebagai BUG, karena bukan inilah tujuan yang dimaksudkan dari "magick montage". Saya juga ragu pemetaan gambar HTML akan bekerja dengan benar tanpa perbaikan oleh pengguna. Namun solusi yang lebih kompleks dan lebih dapat dikendalikan pengguna untuk gambar yang saling menimpa diperagakan memakai bentuk terskrip dari penggabungan layer, yang merupakan solusi yang disarankan dan lebih masuk akal. Lihat contoh di Penempatan gambar berlapis secara terprogram.

Mode konkatenasi montage

Seperti yang sudah Anda lihat, montage punya mode konkatenasi khusus yang dapat dipakai untuk menyatukan gambar tanpa ruang ekstra, persis seperti opsi "-append". Meski begitu saya menyarankan Anda menyetel opsi "-tile" secara tepat, agar penyambungannya terarah, entah horizontal, vertikal, atau berupa larik. Sebagai contoh, di sini kita memakai "-tile x1" untuk menyambung gambar secara horizontal.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -mode Concatenate  -tile x1  montage_cat.jpg

[IM Output]

Tetapi mode itu juga dapat dipakai untuk membuat larik gambar dengan sama mudahnya. Sebaiknya gambar-gambarnya berukuran sama, agar terpasang dengan rapi.

  magick montage balloon.gif medical.gif present.gif shading.gif \
          -mode Concatenate  -tile 2x2  montage_array.jpg

[IM Output]

Ketika merangkai gambar dengan ukuran berbeda, gambar dirangkai dengan perataan vertikal 'atas', lalu perataan baris horizontal 'kiri'.

  magick montage medical.gif rose:      present.gif shading.gif \
          granite:    balloon.gif netscape:   recycle.gif \
          -mode Concatenate  -tile 4x  montage_cat2.jpg

[IM Output]

Namun perataan vertikal menjadi aneh bila frame ikut ditambahkan.

  magick montage medical.gif rose:      present.gif shading.gif \
          granite:    balloon.gif netscape:   recycle.gif \
          -mode Concatenate  -tile 4x  -frame 5  montage_cat3.jpg

[IM Output]

Tentu saja pembuatan frame sebenarnya bukan bagian dari mode konkatenasi, jadi bila "-frame" disetel sebelum pengaturan "-mode", frame akan dimatikan. Karena itu keanehan ini kecil kemungkinannya terlihat, kecuali karena keliru saat Anda tanpa sengaja memakai 'geometry nol' (lihat di bawah). Konkatenasi montage ke format pengindeksan gambar 'HTML' menghasilkan image map yang salah. Pada dasarnya image map hasilnya seolah-olah montage yang dihasilkan adalah 'larik' gambar yang benar-benar terbagi rata, bukan rangkaian gambar dalam satu baris. Dengan kata lain, hasilnya salah untuk baris berisi gambar 'pendek'.

Geometry nol, perlu kehati-hatian

Dengan hanya memberi nilai jarak "-geometry" (tanpa menentukan pengubahan ukuran gambar), semua frame gambar montage disetel berukuran sama, sehingga gambar terlebar maupun tertinggi sama-sama muat tanpa diubah ukurannya. Perilaku ini sendiri sudah berguna...

  magick montage present.gif rose: shading.gif \
          -frame 5  -geometry +1+1   montage_geom_1.jpg

[IM Output]

Namun tersisa celah 1 piksel di sekeliling dan di antara frame gambar. Tetapi bila Anda mencoba menghilangkan celah itu dengan posisi "+0+0", akan muncul masalah yang sangat tidak biasa...

  magick montage present.gif rose: shading.gif \
          -tile x1  -frame 5  -geometry +0+0  montage_geom_0.jpg

[IM Output]

'Geometry nol' yang Anda tentukan (yaitu "-geometry 0x0+0+0" ) punya efek tambahan berupa menempatkan montage dalam mode 'konkatenasi' (lihat di atas), yang BUKAN yang kita inginkan di atas. Untuk gambar tunggal juga tidak jadi soal bila kita memakai "-append" nol (dan dengan begitu mode konkatenasi). Hasilnya memang seperti yang kita inginkan: tanpa border tambahan. Karena itu "-geometry +0+0" tidak masalah bila Anda memakai "magick montage" hanya untuk menambahkan label pada gambar. Namun mode konkatenasi tidak akan dipicu bila Anda menentukan 'ukuran' geometry yang bukan nol untuk gambarnya, sekalipun offset yang dipakai nol. Hal ini pada gilirannya memberi kita solusi cerdik bagi masalah semula. Yang kita lakukan adalah menyetel ukuran gambar geometry "1x1" tetapi sekaligus memberi tahu IM agar tidak pernah memperkecil gambar (memakai karakter "<") ke ukuran itu! Dengan kata lain, jangan pernah mengubah ukuran gambar sama sekali; cukup pakai offset nol di dalam argumen geometry yang bukan nol.

  magick montage present.gif rose: shading.gif \
          -frame 5  -geometry '1x1+0+0<'  montage_geom_1x1.jpg

[IM Output]

Ini memunculkan satu lagi pedoman praktis yang baik...

Selalu setel geometry yang bukan nol saat memakai montage

Sekalipun itu hanya geometry 'palsu' seperti yang saya pakai di atas.

Penanganan latar belakang dan transparansi

Secara bawaan gambar ditimpakan ke kanvas montage, yang dibuat memakai pengaturan warna "-background", seperti yang terlihat di sini. |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -geometry +5+5  -background lightblue   bg_lightblue.gif

[IM Output]
Alih-alih warna polos, Anda dapat memakai "-texture" untuk menentukan gambar tile yang dipakai menggantikan warna "-background". |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -geometry +5+5   -texture bg.gif      bg_texture.gif

[IM Output]
Menambahkan frame (yang menambah ruang border ekstra ke dalam tile) sekadar menambahkan 'hiasan' gambar di atas kanvas latar belakang. |

  magick montage font_9.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 5  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame.gif

[IM Output]
Perhatikan bahwa saat diberi frame, pengaturan "-bordercolor" akan dipakai untuk mengisi bagian dalam frame, yang efektifnya menjadi warna latar belakang gambar. Perhatikan pula bahwa area transparan mana pun pada gambar juga disetel ke warna ini. | _Sebelum IM versi 6.1.4, apa yang terlihat pada area transparan gambar tidak terdefinisi. Pada sebagian versi, Anda akan menembus gambar ber-frame itu dan melihat warna atau tekstur latar belakang. Pada versi lain, hasilnya bisa hitam atau putih. Pada versi lainnya lagi, Anda bisa menembus semua layer dan gambar akhirnya transparan di tempat gambar aslinya transparan. Mutakhirkan SEKARANG bila hal ini menjadi masalah bagi Anda.

_
Juga baru pada IM versi 6.1.4 adalah kemampuan memakai frame khusus selebar 1 piksel. Ini pada dasarnya menghilangkan sama sekali frame di sekeliling sel gambar, tetapi tetap mempertahankan padding "-bordercolor" internal di sekeliling (dan di bawah) gambar. Sebagai contoh, bandingkan frame '1' dengan lebar frame minimal '2'. |

  magick montage font_1.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 1  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame_1.gif

[IM Output]
|

  magick montage font_2.gif  \( recycle.gif -set label recycle \)  medical.gif \
          -tile x1  -frame 2  -geometry '40x40+5+5>' \
          -bordercolor lightblue  -texture bg.gif  bg_frame_2.gif

[IM Output]
Tetapi bagaimana bila Anda ingin montage-nya berlatar belakang transparan? Terutama bila Anda berencana memakainya di halaman web yang memuat pemetaan tekstur. Mudah saja, cukup pakai warna "-background" 'None' atau 'Transparent', tanpa gambar "-texture" apa pun yang akan menimpa pengaturan itu. Sebagai contoh, di sini kita menghasilkan montage transparan. Perhatikan bahwa "-geometry" tetap dipakai untuk menambahkan ruang di sekeliling dan di antara gambar. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1  -geometry +2+2  -background none   bg_none.gif

[IM Output]
Tentu saja bila Anda juga memakai "-frame", warna "-bordercolor" pun perlu dibuat transparan. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1 -frame 5 -geometry '40x40+5+5>' \
          -bordercolor none  -background none    bg_framed_trans.gif

[IM Output]
Perhatikan bahwa opsi montage "-shadow" sama sekali tidak terpengaruh oleh semua hal di atas. Bayangan diterapkan sesuai bentuk transparan akhir dari sel, sebelum ditimpakan ke warna atau tekstur latar belakang. |

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1  -shadow  -geometry '40x40+5+5>' \
          -texture bg.gif  bg_shadow.gif

[IM Output]
|

  magick montage font_9.gif  recycle.gif  medical.gif \
          -tile x1 -frame 5 -shadow  -geometry '40x40+5+5>' \
          -bordercolor none   -texture bg.gif  bg_shadow_framed.gif

[IM Output]

Saran, gagasan, atau contoh lain pemakaian "magick montage" tentu saja selalu disambut baik. Hal yang sama berlaku untuk apa pun di halaman-halaman contoh ini.


Ukuran keluaran gambar montage

Matematika montage cukup lugas...

Pada dasarnya lebar montage seharusnya....
  (geometry_size + 2*frame_size + 2*geometry_offset) * images_per_column

Artinya, tiap 'sel' montage memiliki frame dan jarak (border) berukuran tetap
yang ditambahkan di sekelilingnya sebelum sel-sel itu disambung menjadi satu.

Intinya ukuran montage juga merupakan kelipatan ukuran tile, sehingga montage
mudah dipecah atau 'sel'-nya ditata ulang bila diinginkan, karena selnya adalah
tile sederhana berukuran tetap dalam larik persegi panjang.

Tingginya serupa, tetapi ada tambahan ruang yang diperlukan untuk label dan
judul montage yang opsional. Keduanya jauh lebih sulit dihitung, karena
sangat bergantung pada pengaturan teks, font, pointsize, dan
density.

Menambahkan bayangan pada montage juga berpengaruh pada perhitungan ini,
tetapi tampaknya itu hanya tambahan tetap yang kecil pada tepi bawah dan
tepi kanan.  Tampaknya hal itu tidak memengaruhi ukuran tile yang dipakai.