ImageMagickで画像結合…便利なmontageコマンド使用例

コマンドラインから画像結合したい

そんな時にも便利なのが ImageMagick です。

具体的にはmontageコマンドを用います。

個人的メモも兼ねて使い方をまとめました。

ImageMagickのインストール

マルチプラットフォームなコマンドツールです。

▼ 各OSでのダウンロード・インスト手順

僕はWindows環境でwsl経由で使ってみました。

WSLにおける使用OSはUbuntuです。

▼ このようにImageMagickインストール

▼ インストール経過

wsl環境では上記のように一部fetchエラーが発生。

ですがmontageコマンドは使えるので無視でOKです。

montageコマンドで画像結合する基本

基本のmontageコマンドの使い方がこれ

結合したい画像ファイル(または画像フォーマット構文)を並べ、最後にそれら結合したアウトプット画像を指定するだけです。

 

たとえば次の3つの画像があるとします。

▼ 画像ファイル名と画像

画像ファイル名 画像
number_1.png 白色の1の数字がオレンジ色背景に配置されている画像
number_2.png 白色の2の数字が紫背景に配置されている画像
number_3.png 白色の3の数字が青背景に配置されている画像

これを横に画像連結したい場合…

▼ このようにmontageコマンド実行

▼ 結合されたout.pngが生成される

3つの画像が結合されたout.png デフォルトだと余白が生成されてしまう

基本の使い方はこのようになります。

 

ちなみに連番の画像ファイルの場合…

次のように %d  でフォーマットできます。

▼ よりスマートなコマンド例

C言語のフォーマット指定子のような感じです。

上記コマンドでは %d  がファイル名のプレースホルダーになり、そのあとの表現 [1-3]  は1から3までの配列 [1, 2, 3] を表します。そして次々にファイル名を展開してくれます。

画像結合時の余白をなくす

生成された画像をもう一度見てみると、

3つの画像が結合されたout.png デフォルトだと余白が生成されてしまう

結合前画像にない余計な空白ができてます。

この空白はコマンドオプションから削除可能です。

▼ 先ほどのコマンドを改変

次の2つのオプションを追加しました。

オプション 説明
geometry サイズ・余白を設定できる。ここでは +0+0  として横縦の余白をなくしている
background 背景色を指定できる。ここに none  = 無背景をセットしている

これで余白なしでアウトプットされます。

▼ 生成された結合後画像

3つの画像を余白無しで結合したout.png 3つの画像が隙間なく横向きに並んでいる

もちろんgeometryオプションで任意の余白もつくれます。例えば左右に8px 上下に4pxの余白をとりたいなら - geometry +8+4  とすればOK

画像をタイル状に縦連結も可能

より応用的な使い方は画像の縦連結です。

画像をタイル状に連結することもできます。

▼ たとえば6つの画像を2行×3列に連結

▼ タイル上に画像連結される

文字通りタイルオプションを指定するだけ

6つの画像がタイル状3列2行に結合されたout.png

文字通りタイルオプションを指定するだけ

説明するまでもないですがtileオプションに [横の画像数x縦の画像数] を指定するだけです。あとはmontageコマンドがよしなにタイル上に配置してくれます。

とっても便利ですね。