本サイトではアフィリエイト広告を利用しています

Windows コード 変換

[ImageMagick]コマンドラインで画像を連結する方法

Windows で動画サムネイルや間違い探し画像を作る場合に、複数の画像をそのまま縦横に連結して出力したいことがあります。
適当なアプリを使えば普通にできますが、正直面倒です。

Photoshopなどでキャンバスサイズを縦方向もしくは横方向に拡張し、できた空の部分にコピペすればいいのは分かってますが、そんなことをせずにコマンドライン一発で連結する方法をメモしておきます。

UNIX ユーザー御用達の ImageMagick というツール、ライブラリを使います。

ImageMagick を入手・インストール

以下のページから、適当なものをダウンロードします。

https://imagemagick.org/script/download.php

Windows の方は Windows Binary Release のセクションから(までスクロールして)ダウンロードします。

私は Windows11 環境下で ImageMagick-7.1.2-0-Q16-HDRI-x64-dll.exe をダウンロードしました。

Cygwin とかからでも利用することができますが、PowerShell 上で実行することを前提にします。

最近はインストール時に勝手にスクリプトで設定していれる場合が多いですが、念のため手動でもパスを通しておきます。

典型的な使い方としては、C:¥Program Files¥ImageMagick-7.1.2-0-Q16
にパスを通して、コマンドウィンドウからコマンドを発行します。

念のため、PCを再起動して、次の作業に進みます。

次の画像 A.png と B.png を縦に連結します。

A.png
サンプル-A.png

B.png
サンプル-B.png

で、画像を連結するためのコマンドの使い方は、

 cygwin
magick.exe A.png B.png -append vert-AB.png

で縦連結。

 cygwin
magick.exe  A.png  B.png +append holi-AB.png

で横連結です。

同じフォルダ内、ディレクトリ内の画像をまとめたいなら

 cygwin
magick.exe *.png +append holi-AB.png

とやってもいいのですが、画像が多いとファイルを開く時にメモリが溢れます。

ImageMagick の convert というコマンドがありますが、Windows にもファイルシステムを変更する convert というコマンドがあり、Windows のコマンドプロンプトから、下手に実行するとシステムに被害をもたらしかねないので、今回は参考程度に心にとめておいてください。

Cygwin や Linux などから実行する場合は、以下のようにすると簡単です。

 cygwin
convert -append *.png output.png #縦につなげる
convert +append *.png output.png #横につなげる

縦連結 AB.png
サンプルpng縦連結画像

Windows のコマンドプロンプトからも ImageMagick の convert を使いたい場合は、インストール時に "Install legacy utilities (e.g. convert)" にチェックを入れてください。

私的な意見ですが、Windows ユーザーはわざわざそうする必要はないと思います。以下のようにすれば、Windows のコマンドプロンプトからでも、とりあえず ImageMagick の convert コマンドは実行できます。こちらの方が、Windows ユーザーは安全なのでおすすめです。

横連結 AB.png
サンプルpng横連結画像

 cygwin
magick.exe convert -append *.png output.png #縦につなげる
magick.exe convert +append *.png output.png #横につなげる

画像連結の下準備として、画像のサイズをそろえたいことが普通にあります。
サイズ変更のために別ソフトを立ち上げるのは、面倒なので私は以下のようにしています。
画質にこだわる方は、専用ソフトの方がよいかもしれません。

幅のみ指定(任意の高さで生成)
 cygwin
magick.exe convert "変換前の画像名" -resize  (width)x  "変換後の画像名"
# 例
magick.exe convert A.png -resize 200x B.png
高さのみ指定(任意の幅で生成)
 cygwin
magick.exe convert "変換前の画像名" -resize  x(height) "変換後の画像名"
# 例
magick.exe convert A.png -resize x200 B.png

-Windows, コード, 変換
-, ,