ImageMagick の例 --
モンタージュ、画像の配列
- 索引
-
ImageMagick の例:序文と索引
-
モンタージュ:導入と概要
-
モンタージュ設定
-
画像ディレクトリの索引
- HTML サムネイル画像マップ(基本的なインデックスマップ)
- JPEG 画像を使用した、より小さな HTML インデックスマップ
- ビジュアルインデックス(モンタージュを使用しないソリューション)
- ポラロイド写真のモンタージュ(凝ったインデックスマップ)
-
モンタージュの使用における特殊なテクニック
magick montage
」の用途は、画像サムネイルの表を生成すること、つまり、特に写真など、大量の画像コレクションのサムネイルを参照することです。そして、今でもその目的で使用できますが、もっと多くのことができます。このページでは、モンタージュでできること、そして独自の画像でどのように使用できるかを調べます。モンタージュ、導入
「magick montage
」コマンドは、サムネイル画像の配列を作成するように設計されています。大量の画像コレクションの校正シートのようなものです。オプションのないデフォルトの「magick montage
」は非常にシンプルで、かなり大きな包含正方形があり、フレーム、ラベル、シャドウはありません。
ジオメトリ - タイルサイズと画像のサイズ変更
「-geometry
」設定は、「magick montage
」の最も重要なコントロールです。個々のサムネイル画像のサイズと、それらの間のスペースを定義します。ジオメトリのサイズ部分は、サイズ変更演算子の引数として使用され、その特殊な目的のフラグもすべて含まれます。オプションの位置部分は、画像の周囲に残すボーダー空間の量として解釈されるため、これを小さくすると、画像間のギャップが小さくなります。デフォルトの「-geometry
」設定は「120x120>+4+3
」です。これは、指定された任意の画像を120x120ピクセルのボックスに収めることを意味します。画像が大きい場合は縮小しますが、より大きい画像のみ縮小 ('>') フラグに従って、小さい画像はサイズ変更しません。次に、タイルサイズは、すべてのサイズ変更された画像の最大寸法と、実際に指定されたサイズに設定されます。つまり、指定された「-geometry
」サイズよりも小さいタイルサイズは決して得られません。「-geometry
」のデフォルトを変更することで、前の例のスペースの巨大なタイルサイズを削除できます。たとえば、サイズコンポーネントを削除すると、どの画像もサイズ変更されず、タイルサイズはすべての入力画像の最大寸法に設定されます。たとえば、ここで私は、タイル間に小さなギャップがある、指定された最大の画像を使用してタイルするようにモンタージュに要求しています。これは、すべての入力画像が小さく、ほぼ同じサイズである場合に使用する非常に一般的な設定です。たとえば、ここでは、1つの画像をより大きな「ロゴ」画像に置き換えました。ただし、サイズ変更設定を「48x48
」に設定して、より小さい画像とより大きい画像の両方をサイズ変更しました。
magick montage balloon.gif medical.gif present.gif logo: \ -geometry 48x48+2+2 montage_geom_size.jpg |
![[IM Output]](montage_geom_size.jpg)
magick montage balloon.gif medical.gif present.gif logo: \ -geometry 48x48\>+2+2 montage_geom_larger.jpg |
![[IM Output]](montage_geom_larger.jpg)
1x1<
」などの特殊なサイズを使用します。これにより、IMは小さい画像のみを指定されたサイズにサイズ変更するように指示します。1ピクセルより小さい画像は存在しないため、どの画像もサイズ変更されません。したがって、タイルサイズは再びページ上のすべての画像の最大寸法になります。理由についてはゼロジオメトリ、注意が必要を参照してください。ジオメトリ - タイル間隔
「-geometry
」設定の位置部分は、タイルを連結する前に、これらの寸法のボーダーをタイルに追加することで、個々の「タイル」間にスペースを追加します。つまり、デフォルトの「-geometry
」設定「+4+3
」では、タイルは最終画像の左端と右端から4ピクセル離れ、水平方向には8ピクセル(指定されたサイズの2倍)の間隔が空きます。垂直方向の間隔にも同じことが当てはまります。すべての画像がサイズ変更された場合(最後から2番目の例)のタイル間のスペースが、エッジの周りのスペースの2倍になっていることに注意してください。タイルレイアウトのコントロール
「magick montage
」で次に重要なオプションは「-tile
」設定です。これは、タイルされた画像を最終結果にレイアウトする方法にどのような制限を設けるかをモンタージュに指示します。ImageMagickバージョン6では、「magick montage
」は、「-tile
」のヒントを提供しない場合、指定された数の画像を最適にタイルする方法について推測を行います。ただし、タイリングを決定する際に画像のアスペクト比を調べないため、タイル化されている画像はほぼ正方形であると想定しています。
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]](tile_1.gif)
![[IM Output]](tile_2.gif)
![[IM Output]](tile_3.gif)
![[IM Output]](tile_4.gif)
![[IM Output]](tile_5.gif)
![[IM Output]](tile_6.gif)
![[IM Output]](tile_7.gif)
![[IM Output]](tile_8.gif)
![[IM Output]](tile_9.gif)
![[IM Output]](tile_0.gif)
![]() ![]() |
奇妙な「[1-5] 」構文はUNIXシェルの略語で、ファイル名のリストに展開されます。「magick montage 」コマンド自体は、これらの文字を見ることはなく、結果のファイルリストのみを見ます。 |
-tile
」設定を判断するのが非常に得意です。ここでは、入力画像の数と、それらの画像をレイアウトするためにIMが使用するタイル設定の表を示します。
|
|
|
-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]](tile_9x1.gif)
![[IM Output]](tile_4x3.gif)
![[IM Output]](tile_3x3.gif)
![[IM Output]](tile_2x3.gif)
![]() ![]() |
IM v6.1 より前は、モンタージュは、画像の数がそのスペースを使用しない場合、余分なスペースを自動的に切り捨てていました。そのため、「9x1 」画像のような設定は、「7x1 」タイル画像を生成するように切り捨てられていました。
このため、以前のモンタージュのユーザーは、「 |
-tile
」設定から行番号または列番号のいずれかを削除することで、余分なスペースと複数の画像の問題を回避できます。不足している番号は、モンタージュによって可変と見なされ、モンタージュはすべての入力画像を保持するのに十分なタイルスペースのみを作成し、複数の画像ではなく、1つの画像のみを生成します。
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]](tile_x1.gif)
![[IM Output]](tile_x2.gif)
![[IM Output]](tile_x4.gif)
![[IM Output]](tile_4x.gif)
![[IM Output]](tile_5x.gif)
![[IM Output]](tile_9x.gif)
-tile
」設定のより一般的な使用方法であり、モンタージュのサイズを正しく設定しながら、最終的な配列サイズを決定する際にいくらかの制御を可能にします。上記の最後の画像に注意してください。そこで、9列の画像を要求しました。IMは、指定された画像が9枚未満であっても、要求された9列を生成しました。一方、最初の画像(1行要求)は、すべての画像を保持するのに正確な長さです。「-tile
」設定によって与えられたスペースにモンタージュがタイル化できるよりも多くの入力画像がある場合、複数の画像がモンタージュによって生成される可能性があり、その結果、ファイル名に画像シーケンス番号が追加されたり、何らかのGIFアニメーションが作成されたりします。詳細については複数の画像の書き込みを参照してください。たとえば、ここでは、各画像ファイル名のフレーム/シーン/ページ番号に「%d
」を指定することで、生成された各ページの個別の画像を保存するようにモンタージュに要求しました。
フレーム装飾
画像を配置するためにモンタージュを使用することの最も良い点は、各画像の周りに余分な「飾り」を追加するための多くの追加コントロールを提供することです。たとえば、「-frame
」を追加して、表示されている画像をより明確に定義できます。
magick montage balloon.gif medical.gif present.gif shading.gif \ -tile x1 -frame 5 -geometry +5+5 frame.jpg |
![[IM Output]](frame.jpg)
magick
」の同じオプションとは異なります(3Dフレームの追加の例を参照)。モンタージュのフレームオプションは、フレームの内側と外側のベベルのデフォルト値を自動的に判断します。そのため、単一の引数番号のみが必要です。ボーダー装飾
IM v6.1.0頃より、「-border
」がモンタージュの新しい装飾オプションとして追加されました。これは、「-geometry
」設定に従ってリサイズされた後、各画像の周囲に追加の「パディング」を追加します。
magick montage balloon.gif medical.gif present.gif shading.gif \ -tile x1 -border 5 -geometry +5+5 border.jpg |
![[IM Output]](border.jpg)
![]() ![]() |
現在、「-border 」装飾は、フレーム装飾も適用されている場合は機能しません。 |
![]() ![]() |
IM v6.1.0(およそ)以前は、「-border」は、「magick montage 」コマンドラインで出現した時点では「magick 」と同様に画像に適用されていました。つまり、境界線は画像が(「 -geometry 」に従って)リサイズされるずっと前に画像に追加されていたため、その時点での画像サイズに応じて、各画像の境界線の幅が異なっていました。この不整合を解消するために-borderがモンタージュの特別な設定になりました。 |
シャドウ装飾
フレームで影を追加するのも非常に効果的です。
magick montage balloon.gif medical.gif present.gif shading.gif \ -tile x1 -frame 5 -shadow -geometry +5+5 frame_shadow.jpg |
![[IM Output]](frame_shadow.jpg)
magick montage balloon.gif medical.gif present.gif shading.gif \ -tile x1 -shadow -geometry +5+5 -background lightblue \ shadow_noframe.jpg |
![[IM Output]](shadow_noframe.jpg)
|
![]() |
-geometry
」間隔を考慮しないことに注意してください。そのため、画像が非常に接近している場合、前の画像の影が後の画像によって隠される可能性があります。例えば…
magick montage balloon.gif medical.gif present.gif shading.gif \ -tile x1 -shadow -geometry +1+1 -background none \ shadow_spacing.png |
![[IM Output]](shadow_spacing.png)
-geometry
」間隔を確保することをお勧めします。「エッジクリッピング」による影の過度な切り抜きを避けるため、「-shadow
」オプションは、最終画像の右端と下端に4ピクセルの追加のエッジ間隔を追加します。これは、通常の「-geometry
」間隔に追加されます。しかし、上記のように、これは常に十分なスペースとは限りません。現在、モンタージュは生成された影のオフセット、色、または「ソフトさ」を制御する手段を提供していません(少なくともまだ提供していません)。しかし、以前のバージョンのモンタージュで提供されていたハードな長方形の影では、そのような制御はありませんでした。モンタージュ画像へのラベル付け
また、モンタージュにソースファイル名で画像にラベルを付けるように指示することもできますが、おそらく画像フレームのサイズを変更する必要があります。そうでないと、ラベルが収まらず、テキストラベルが切り捨てられる可能性があります。この例では、「60x60>
」をジオメトリ文字列に追加しました。これは、IMに、より大きな画像をこのスペースに収まるように縮小させるが、小さすぎる画像を拡大しないように指示するものです。これはおそらく、モンタージュの最も一般的な使用方法です。
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]](label_fname.jpg)
%f
」は特別なフォーマット文字で、メモリ内の画像に関するさまざまな詳細を抽出できます。他の情報については、「画像プロパティのエスケープ」を参照してください。サムネイルにラベルを付ける場合、「-frame
」を使用する必要はありません。ラベルは影を付けないので、読みやすくなります。
montage -label '%f' balloon.gif medical.gif logo: present.gif shading.gif \ -tile x1 -shadow -geometry '60x60+2+2>' label_shadow.jpg |
![[IM Output]](label_shadow.jpg)
-set
」画像属性演算子を使用して、読み込んだ後に画像にラベルを付け直すことができるようになりました。「-set
」演算子を使用して、画像に関する詳細情報を追加しましょう。そして、いくつかのモンタージュ設定も…
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]](label_fname3.jpg)
-label
」設定を使用して、画像の読み込み時にデフォルトのラベルを定義するか、後で「-set
」演算子を使用して画像にラベルを付け直すことができます。![]() ![]() |
「%wx%h 」は、メモリ内の画像の現在のピクセル幅と高さを示します。入力中に画像サイズが変更された場合、これはディスク上の画像(または作成)サイズとは異なる場合があります。メモリ内のピクセルサイズが必要な場合は、「%[width]x%[height] 」を使用してください。 |
-set
」演算子が適用される画像を制限するために、括弧を使用する必要があります。ここでは、例として、両方のラベル付け方法を使用します。しかし、できるからという理由だけで、モンタージュにタイトルを追加してみましょう。
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]](titled.jpg)
-label ''
」または「+label
」を使用して、次の画像の画像ラベルをオフにすることができます。ただし、後でわかるように、これらの2つの設定はまったく同じではありません。読み込み後のラベル「-set
」操作にも同じことが当てはまります。
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]](labeling.jpg)
すべての画像にラベルを付けるか、またはラベルを付けないかのいずれかです!
モンタージュ操作自体で画像にラベルを付ける必要はありません。MIFF形式とPNG形式の両方では、ラベルを画像形式の一部として保存できます。モンタージュは、既にラベルが含まれている読み込まれた画像に自動的にラベルを付けます。これは自動的であり、指定する必要はなく、この手法を使用して非常に複雑な画像モンタージュを生成しました。たとえば、「注釈角度の例」のモンタージュ配列は、この手法を使用して作成されました。この自動ラベル付けを望まない場合は、画像を読み込む前に「-label ''
」を使用して、読み込まれたり作成されたりするすべてのラベルを空の文字列にリセットするようにモンタージュに明示的に指示する必要があります。または、画像を読み込んだ後に「+set label
」を使用してラベルメタデータを削除することもできます。これが「+label
」が空のラベル(「-label ''
」)の使用と異なる点です。前者は、読み込まれる画像が持つ可能性のあるラベルメタデータを使用して、デフォルトの動作を自動的に使用に戻しますが、後者はラベルを空の文字列で置き換えます。これにより、ラベルが事実上削除されます。「-label '%l'
」を使用して、元の画像ラベルを保持することもできます。これは、画像処理スクリプトにおけるNO-OPラベル付けオプションとして役立ちます。「-set
」では、「-label
」または「-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]](label_control.jpg)
-label ''
」設定によって受信ラベルが削除され、3番目の画像は「+label
」でラベル設定をオフにしたため、画像のラベルも使用されています。保存された画像メタデータの使用
後でモンタージュで使用するために画像を生成する際には、特定の画像ファイル形式がどのような種類の画像メタデータを保存できるかを理解することが重要です。たとえば、PNGとMIFF画像ファイル形式のみが、保存された画像ファイル形式に「label
」メタデータを保存できます…
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]](label_files.jpg)
comment
」メタデータを使用できます。これは、「-label
」に「%c
」引数を指定することで使用できます。
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]](comment_files.jpg)
caption
」メタデータを使用することもできます。
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]](caption_files.jpg)
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]](my_data_files.jpg)
モンタージュにおけるギャップの作成
「-tile
」設定を慎重に使用し、指定された画像の数を制御することで、モンタージュの下部に余分なスペースを残すことができますが、モンタージュの真ん中に空のタイルスペースを残すには、特別な画像を使用する必要があります。「null:
」で生成された画像は、この目的のために特に定義されています。表示される位置には、ラベルは付けられません(定義されている場合でも)、フレームや影の「フワフワ」も追加されません。タイルは、モンタージュ描画キャンバス自体の背景色(またはテクスチャ)を除いて、完全に空のままになります。
magick montage -label 'Image' medical.gif null: present.gif \ -tile x1 -frame 5 -geometry +2+2 montage_null.jpg |
![[IM Output]](montage_null.jpg)
null:
」画像は1ピクセルの透明な画像として表されます。「-crop
」や「-trim
」などのオプションの「エラー画像」としても使用されます。これにより、操作の結果として「ゼロ」または空の画像が生成される可能性があります。この特別な画像は保存して後でギャップを残すことはできません。現在、「magick montage
」のコマンドラインで指定された場合にのみ「特殊」です。![]() ![]() |
現時点では、HTMLテーブルのように、複数の行または列にまたがるモンタージュ画像を許可する方法は提供されていません。生成される画像の配列に最適に適合する可変サイズの行と列を生成することもできません。 このような機能が本当に必要な場合は、独自のモンタージュアプリケーションを開発する必要があります。開発した場合は、ぜひご寄稿ください。既存のモンタージュアプリケーションへのマージを検討させていただきます。 解決策としては、画像サムネイルに自分でラベル付けと枠付けを行い、画像の追加を使用するか、より自由な画像のレイヤリング手法を使用する方法があります。 |
モンタージュ設定の詳細
上記で示した "magick montage
" の設定は、モンタージュの基本的な制御項目に過ぎません。ご自身のニーズに合わせて検討したいその他の設定が多くあります。 モンタージュの色設定
-background |
描画された枠の外側の色です。多くの場合、ウェブページで使用するために 'none ' または 'transparent ' に設定されます。指定されている場合は、代わりに-texture設定が使用されます。 |
-bordercolor |
画像の枠内、または境界線の余白内の塗りつぶしの色です。画像内の透明領域は、そのような装飾が追加されない限り、この色になります。 |
-mattecolor |
枠の色として使用される色です。この色は、枠に3Dのベベル加工のような外観を与えるために、明るくしたり暗くしたりもされます。そのため、この設定は実際には5つの色を定義します。(画像の枠付けも参照) |
-fill |
テキストラベルとタイトルの塗りつぶしの色です。 |
-stroke |
テキストラベルとタイトルの枠線の色です。 |
モンタージュのコントロール設定
"
-tile {cols}x{rows}
- 1つのモンタージュ画像を埋めるために使用される画像の横方向と縦方向の数です。読み込まれたり作成された画像が1つのモンタージュ画像に収まらない場合は、複数の画像が作成されます。(上記タイル制御を参照)
-title {string}
- 個々の画像にラベルを付けるために使用されるものと同じフォント(ただしサイズが大きい)を使用して、モンタージュ全体にタイトルを設定します。
-frame {width}
- 指定された幅を使用して、画像を含むボックスの周囲に枠を作成します(少なくとも2以上にする必要がありますが、5または6が適切な値です)。使用する場合、画像の透明部分も境界線の色になります。
-border {width}
- 指定された幅を使用して、画像の周囲に境界線を作成します。使用する場合、画像の透明部分も境界線の色になります。
-shadow
- 枠の影を生成します。引数は必要ありません。
-texture {filename}
- 特定の色ではなく、指定されたテクスチャ(タイル状の画像)を背景に使用します。詳細については、下記の背景と透明度セクションを参照してください。
-geometry {W}x{H}+{X}+{Y}
- モンタージュがキャンバス上に画像を重ねる前に、すべての画像が読み込まれた後にサイズ変更します。また、画像が描画されるタイルのサイズと間隔も定義します。サイズを指定しない場合は、画像はサイズ変更されません。
-gravity {direction}
- 画像が枠より小さい場合、枠内のどこに画像を配置するかを指定します。デフォルトでは中央に配置されます。
label:
" 画像作成演算子が理解するすべてのフォント設定が追加されます(ラベル画像ジェネレーターを参照)。これらの設定は、表示された画像の下に追加されたラベルの作成に使用されます。これには、"-font
"、"-pointsize
"("-title
"の場合は無視)、"-density
"、"-fill
"、"-stroke
"、および"-strokewidth
"などの設定が含まれます。上記のいずれかの設定が定義またはリセットされている限り、最終的な '出力ファイル名' 引数の前に、モンタージュは要求された設定を使用します。 画像の読み込み/作成の設定の再利用
ただし、これらのオプションの多くは、画像の生成時または画像処理時に他の目的でも使用されることに注意してください。しかし、IM v6のコマンドライン処理の「表示されたとおりに実行する」機能のおかげで、「magick montage
」コマンドには問題ありません。つまり、これらのオプション設定を使用して、読み込まれる画像の読み込み、作成、または変更を行い、すべての画像の読み込みまたは作成後にそれらの設定をリセットできます。最終的な設定値が、モンタージュが最終的な処理に使用します。これは、IMバージョン6以前のバージョンでは、中間画像を生成することなく(上記画像ラベルの例のように)、画像作成設定とモンタージュ設定を分離することが一般的に不可能であった場合とは異なります。再利用の実際的な例を次に示します。これらのサンプルページで使用してきたフォントの一部を表形式で作成し、モンタージュによる画像の最終処理のために設定を他の値にリセットしました。 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]](montage_fonts.gif)
magick montage
" コマンドの2段階のプロセスに注目してください。ほぼ空の行を追加して明確にマークしました。最初の部分は、通常のIM "magick
" コマンドを使用して複数の画像を定義する場合と本質的に同じであり、「表示されたとおりに実行する」順序で処理されます。2番目の部分は、「magick montage
」コマンド自体が使用するすべての設定を定義します。つまり、最終的なモンタージュ画像で使用したい枠、画像のサイズ変更、フォント、色です。特に、モンタージュされた画像の下にラベル付けするための"-font
" と "-pointsize
" の設定をリセットすることに注意しています。このように「magick montage
」のオプションを分離できますが、コマンドラインでいつでもモンタージュ設定を定義できます。それらの設定が画像の作成と処理のオプションと干渉せず、コマンドラインの終わりに正しく定義されている限り、「magick montage
」はそれらを使用します。補足:上記と同様のことを行うために作成したシェルスクリプト(モンタージュの以前のバージョンでも動作します)で、truetype(.ttf)フォントのディレクトリを表示する「show_fonts
」があります。別のシェルスクリプトの例は「show_colors
」です。Montage と Magick オプションの違い
"magick montage
" は一般的に、入力画像の読み込みと処理に任意の "magick
" 設定と演算子を使用できますが、強調する必要があるいくつかの違いがあります。これらの "magick
" 演算子と設定は、「magick montage
」内で使用する場合とは異なります。これらのオプションの「
-tile
- "
magick
" では、"-tile
" 設定は、"-fill
" 色を使用する代わりに、テクスチャとして使用する画像を定義します。"magick montage
" では、個々の画像セルの 'タイル' のレイアウト方法を定義します。詳細については、上記タイルレイアウト制御を参照してください。-frame
- "
magick
" では、これは画像の周囲に3D枠線を追加するために使用される演算子であり、正しく動作するには4つの引数が必要です(Convert Frameの例を参照)。詳細については枠の装飾を参照してください。-border
- IM v6.1.0付近で、この演算子は特別なモンタージュオプションになりました。そのため、前の枠オプションと同様に、Convert Borderのように2つの引数ではなく、1つの数値のみを引数として取ります。詳細については境界線の装飾を参照してください。
-shadow
- "
magick
" の "-shadow
" オプションは、ぼやけた影を作成するために使用される引数を取ります。これは、元の画像の2番目のコピーの下に配置できます。しかし、"magick montage
" では、これは長方形の影機能のオン/オフを切り替えるブール値の設定に過ぎません。影の装飾の詳細を参照してください。-geometry
- "
magick montage
" の "-geometry
" オプションは、最終的なモンタージュの各セルの画像のサイズとセル間の間隔を提供するために単に保存されます。"magick
" では、最後の画像のみのサイズを変更し、画像合成のオフセットを設定します。
magick
」形式をどうしても使用したい場合は、「magick montage
」に渡す前に、「magick
」を使用して画像を前処理する必要があります。中間ファイルを使用する方法は、上記の画像ラベルの例で示されています。もう1つの方法は、「magick
」で処理を行い、結果として得られた複数の画像を「magick montage
」にパイプすることです。すべての例で行っているように、常に画像入力処理を最初に実行し、その後「magick montage
」固有の設定(ラベル付きフレームなど)を設定すれば、この分離は容易です。これは、上記の最後のフォントの例で特に示されています。たとえば、画像を「magick
」のフレームで囲み、その後「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]](double_frame.jpg)
-frame
」演算子の「magick
」形式に必要な追加引数も参照できます。画像ディレクトリのインデックス
HTMLサムネイルイメージマップ
Montageは、特に画像のサムネイルマップを生成するために設計されています。たとえば、ここでは、IM Examples全体で例に使用されているデジタル写真を保持するPhoto Imagesソースディレクトリのインデックスを作成しました。「art」画像をクリックして結果を表示してください。
|
![]() IM Examples 写真ストア |
![]() ![]() |
単なる「%wx%h 」ではなく、「%[width]x%[height] 」の使用に注意してください。これは、画像の読み込み時にサイズ変更が行われるため重要です。前者は、ディスク上にある元のピクセルサイズで画像にラベル付けしますが、後者は画像の現在のサイズ変更後のサイズを使用します。これは、ユーザーが見落としがちな点です。 |
もちろん、インデックス画像のみが必要な場合は、HTMLインデックスファイルを生成する必要はありません。その場合は、上記のコマンドの「
photo_index.png
すべての画像のサムネイルのモンタージュ photo_index_map.shtml
サムネイル画像のHTML「イメージマップ」 photo_index.html
World Wide Web用のHTMLサムネイルインデックスページ。
これには、以前のイメージマップのコピーも含まれています。
INDEX.html
」を生成したい画像に置き換えるだけです。画像プロパティエスケープの「%t
」を画像の「-label
」に使用することに注意してください。これは、「パス」コンポーネントのない画像のファイル名です。ただし、HTMLリンクには適切な「パス」コンポーネントが含まれているため、画像自体とは異なるディレクトリにインデックス画像を作成できます。上記例では、ソース画像「'*_orig.*'
」は引用符で囲まれているため、「magick montage
」コマンドが「*」自体の展開を行い、コマンドラインシェルは行いません。これにより、発生する可能性のあるコマンドラインの長さ制限の問題を回避できます。また、読み込み時に画像の初期サイズ変更「[120x190]
」も行っています(画像修飾子の読み込みを参照)。JPEG画像の場合、JPEGライブラリが非常に大まかな初期スケーリングを実行し、画像全体をメモリに読み込まないように、より小さな「-size
」設定も指定しました。これを行わない場合、非常に大きなJPEG画像で、実際には必要ないのに、膨大な量のメモリとCPUサイクルが消費される可能性があります。また、画像が持つ可能性のあるプロファイルはすべて「-strip
」で削除します。詳細については、プロファイル、ストリップ、JPEG処理とJPEG画像の読み込みを参照してください。モンタージュの「-geometry
」オプションは、最終的なサイズ変更設定も指定できますが、この例では読み込み処理中にサイズ変更を行っているため、必要ありません。最後に、「5x
」の「-tile
」オプションを使用して、すべての画像が1つの画像に表示されるようにします。そうでない場合、「magick montage
」は、正しくリンクされていない複数ページのHTMLファイルを生成する可能性があります。これは変更される可能性がありますが、HTMLの生成はImageMagickの主要な目標ではありません。サムネイルとHTMLインデックスページの生成方法については、サムネイルの例ページを参照してください。JPEG 画像を使用した、より小さな HTML インデックスマップ
上記のインデックス画像は、PNG形式のインデックス画像を生成しました。これは、非可逆圧縮形式であるため使用されました。これは、インデックス付けされる画像の色が大きく異なる場合に重要になる可能性があります。また、背景色が「transparent
」または「none
」に設定されている場合、モンタージュの新しい「ソフトシャドウ」機能の使用も可能になります。非常に古いIMでは、上記に対してGIF画像が生成されていました。ただし、これは形式の制限の一部として結果に大きな色の減少をもたらしました。また、PNGが許可するように、半透明の「ソフトシャドウ」の使用も許可されていませんでした。JPEGも半透明性を許可しませんが、画像に透明な背景を使用しない場合は問題ありません。ただし、PNGよりもはるかに小さく、特にWeb用途でインデックス画像のサイズを大幅に削減し、幅広い色を処理する方法を提供します。ただし、上記のHTML出力はPNG形式の画像のみを生成するため、PNGをJPEGに変換するだけでなく、HTMLファイルを修正するための追加処理も必要になります。
|
![]() IM Examples 写真ストア |
- 最初に、以前に行ったように、モンタージュサムネイルHTMLインデックスを生成します。これにより、「
photo_jpeg.html
」と「photo_jpeg.png
」というファイルが生成されました。 - 次に、PNG画像をより小さく、可逆圧縮のJPEG画像に変換しました。
- 次に、短い「
perl
」ワンライナーを使用して、PNGではなくJPEG画像を使用するようにHTMLファイルを変更しました。 - 最後に、PNG画像と、不要なSHTMLマップファイルを削除しました。
-quality
」設定を小さくすることで、JPEG画像をさらに小さくできます。その他の可能なオプションには、「-sampling-factor 2x1
」を使用してさらに小さくする方法があります。ビジュアルインデックス画像(モンタージュではないソリューション)
モンタージュを使用する代わりに、特別な「ビジュアルインデックス」入力形式を使用することができます…
|
![]() ビジュアルインデックス 写真ストア |
|
![]() ビジュアルHTML 写真ストア |
VID:
」は内部的にモンタージュを使用してインデックス配列を生成することが明らかです。ただし、モンタージュを直接使用した場合と比較して、同じ制御を行うことはできません。VID HTMLインデックスはPNG形式のサムネイル画像を作成することに注意してください。ポラロイド写真のモンタージュ
複雑なポラロイド変換が登場したことで、まったく異なるスタイルのモンタージュとモンタージュインデックスを作成できるようになりました。
|
![]() ポラロイド モンタージュ |
+polaroid
」を使用したので、自分で画像のサイズ変更(「-thumbnail
」を使用)を行い、「-background
」と画像の「-label
」を「magick montage
」インデックス配列を作成する前にリセットする必要がありました。ポラロイド変換は、サムネイル画像に「カール」を追加する際にテキストをぼかす傾向があります。ただし、ポラロイド画像をより大きなサイズで生成してから、結果を50%縮小することで、全体を改善できます。唯一の欠点は、「シャドウ」効果が弱まることです。
|
![]() シャープな ポラロイド モンタージュ |
photo_store
」ディレクトリにモンタージュサムネイルインデックスを生成するスクリプトを作成しました。結果については、写真ストアインデックスを参照してください。モンタージュを使用した特殊なテクニック
列へのモンタージュ
デフォルトでは、「magick montage
」は、与えられた順序(通常はソートされた順序)で画像を行ごとに配置することしかできません。しかし、列順序で表示したい場合があります。これは1つのコマンドでは実行できず、少なくとも2つのコマンドのパイプラインが必要です。たとえば、ここでは、2つのモンタージュを使用して、5x3タイルのページを生成します。
|
![]() |
magick montage
」がタイルを作成し、必要なジオメトリタイルのサイズ変更、フレーミング、ラベル付け、および間隔を実行することに注意してください。その後、タイルの各列ごとに1つの画像を出力します。2番目の「magick montage
」は、列間に追加の間隔を追加せずに、列を「ページ」画像に連結します。可変数の列の単一の画像のみが必要な場合は、2番目の「magick montage
」を「magick
」に置き換えて、ページの余分なスペースを追加せずに連結できます。たとえば…
|
![]() |
オーバーラップしたモンタージュタイル
IMユーザーフォーラムでは、Fred Weinhaus(別名fmw42)と別のユーザーpoocoの間の議論の中で、タイル間のスペース(「-geometry
」設定で設定)を負の数に設定すると、実際に画像が描画されるタイル領域をオーバーラップできることがわかりました。たとえば、ここでは、画像の単一行に対して負の水平方向のタイル間間隔を使用します。画像を回転させると、オーバーラップするシリーズがさらに面白くなります…
magick montage null: font_*.gif null: -background none -rotate 30 \ -background white -tile x1 -geometry -8+2 montage_rot_overlap.jpg |
![[IM Output]](montage_rot_overlap.jpg)
null:
」間隔画像を追加する必要がありました。これにより、画像がキャンバスからオーバーフローしません。「magick montage
」は計算して生成します。これにより、いくつかの興味深い可能性が提示されます。たとえば、ランダムに回転されたポラロイド変換を使用して、オーバーラップするサムネイルの非常に興味深い行を生成できます。
|
![[IM Output]](polaroid_overlap.jpg)
+polaroid
」が異なる実行で生成する画像サイズのランダム性を排除し、最終的な画像間のスペースとオーバーラップをより細かく制御することを目的としています。これは非常に興味深い結果ですが、実際には「magick montage
」の意図した用途ではないため、バグとして分類する必要があります。また、ユーザーによる修正なしでは、HTML画像マッピングが正しく動作するとは期待できません。レイヤーの結合のスクリプト形式を使用した、より複雑でユーザーが制御可能なオーバーラップ画像の解決策が示されています。これは推奨されるより論理的な解決策です。プログラムによるレイヤー画像の位置決めの例を参照してください。モンタージュ連結モード
ご覧のとおり、montageには特別な連結モードがあり、「-append
」オプションのように、余分なスペースなしで画像を結合するために使用できます。ただし、「-tile
」オプションを適切に設定して、水平方向、垂直方向、または配列で追加を行うことをお勧めします。たとえば、ここでは「-tile x1
」を使用して、画像を水平方向に追加します。
magick montage balloon.gif medical.gif present.gif shading.gif \ -mode Concatenate -tile x1 montage_cat.jpg |
![[IM Output]](montage_cat.jpg)
magick montage balloon.gif medical.gif present.gif shading.gif \ -mode Concatenate -tile 2x2 montage_array.jpg |
![[IM Output]](montage_array.jpg)
magick montage medical.gif rose: present.gif shading.gif \ granite: balloon.gif netscape: recycle.gif \ -mode Concatenate -tile 4x montage_cat2.jpg |
![[IM Output]](montage_cat2.jpg)
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]](montage_cat3.jpg)
-frame
」が「-mode
」設定の前に設定されると、オフになります。そのため、この特異な現象は、誤って「ゼロジオメトリ」(下記参照)を使用した場合にのみ発生する可能性があります。![]() ![]() |
montageの連結をHTML画像インデックス形式に適用すると、画像マップが正しくなくなります。基本的に、生成されたmontageは、画像を線状に連結したものよりも、真に均等に分割された画像の「配列」であるかのように扱われます。つまり、「短い」画像の行では正しくありません。 |
ゼロジオメトリ、注意が必要です
「-geometry
」のスペース値のみ(画像のサイズ変更を指定しない)の場合、すべてのmontage画像フレームは同じサイズに設定され、最も幅が広く、最も高い画像がサイズ変更されずに収まるようにします。これはそれ自体が便利な動作です...ただし、画像フレームの周囲と間に1ピクセルの隙間が残りました。しかし、「+0+0
」の位置でこれらの隙間を除去しようとすると、非常に珍しい問題が発生します...指定した「ゼロジオメトリ」(つまり「-geometry 0x0+0+0
」)は、montageを「連結」モードにする追加の効果があります(上記参照)。これは、上記で求めていたものではありません。単一の画像の場合、「-append
」(したがって連結モード)を使用しても問題ありません。目的の結果は、余分な境界線がないことです。そのため、「-geometry +0+0
」は、「magick montage
」を使用して画像にラベルを追加する場合にのみ問題ありません。ただし、ゼロオフセットを使用した場合でも、画像の非ゼロジオメトリ「サイズ」を指定すると、連結モードは呼び出されません。これは、元の問題に対する巧妙な解決策を与えてくれます。私たちは「1x1
」のジオメトリ画像サイズを設定しますが、IMには、このサイズに画像を縮小しない(「<
」文字を使用)ように指示します!言い換えると、画像のサイズ変更は行わず、非ゼロジオメトリ引数でゼロオフセットを使用します。これは、もう1つの良い経験則を思い起こさせます...
montageを使用する場合は、常に非ゼロジオメトリを設定します
上記で使用したもののような「偽の」ジオメトリであってもです。背景と透過処理
デフォルトでは、画像は、「-background
」の色設定を使用して作成されたmontageキャンバスに重ね合わされます。
|
![]() |
-texture
」を使用して、代わりに「-background
」の色として使用するタイル画像を定義できます。
|
![]() |
|
![]() |
-bordercolor
」設定を使用してフレームの内側が塗りつぶされ、事実上画像の背景色になります。また、画像の透明領域もこの色に設定されることに注意してください。![]() ![]() |
IMのバージョン6.1.4より前では、画像の透明領域に表示されるものは定義されていませんでした。バージョンによっては、フレーム付き画像を通して背景色またはテクスチャが見える場合がありました。他のバージョンでは黒や白が表示される可能性があります。さらに他のバージョンでは、すべてのレイヤーを見ることができ、元の画像が透明だった部分は最終画像も透明になります。これが問題になっている場合は、今すぐアップグレードしてください。 |
-bordercolor
」のパディングは保持されます。たとえば、「1
」のフレームと最小フレーム幅「2
」を比較してください。-background
」の色を「None
」または「Transparent
」にし、「-texture
」画像でその設定を上書きしないようにします。たとえば、ここでは透明なmontageを生成しました。「-geometry
」は、画像の周囲と間にスペースを追加するために依然として使用されています。
|
![]() |
-frame
」も使用する場合は、「-bordercolor
」も透明にする必要があります。
|
![]() |
-shadow
」オプションは、上記すべてに全く影響を受けません。これは、背景色またはテクスチャに重ね合わされる前に、セルの最終的な透明な形状に従って適用されます。
|
![]() |
|
![]() |
「
magick montage
」の使用に関するご提案、アイデア、その他の例は、もちろん常に歓迎いたします。これらのサンプルページ内のものについても同様です。Montage Image Output Size The mathematics of montage is straight forward... Basically the montage width should be.... (geometry_size + 2*frame_size + 2*geometry_offset) * images_per_column That is, each 'cell' of montage has a fixed sized frame and spacing (border) added around it before the cells are appended together. In essence the size of montage is also a multiple of the tile size, which can make it easy to break up montage, or re-arrange the 'cells', if so desired, as they are simple fixed sized tiles in a rectangular array. The height is similar but with tha additional spacing needed for labels and the optional montage title, both of which are much more difficult to calculate, as they depend heavilly on text, font, pointsize, and density settings. There is also an effect of adding a shadow to the montage in this calculation, but that appears to be a simple small fixed addition to the bototm and right edges. It does not appear to effect the tile size used.