画像ファイルを一括でリサイズしたい、画像ファイルを連結したい、画像ファイルを一括で別形式にしたいとき

投稿者: | 2019年4月30日

画像一括変換は ImageMagic を利用

  • 一括でリサイズする方法
  • ピクセル指定で画像を伸縮する方法
  • 画像を連結する方法(横に連結、縦に連結)
  • 画像の形式を変換する方法

上記4つを備忘録として書いておきます。
この記事では、以下のものが前提となります。

ImageMagick はパソコンにインストールします。
convert.exe もインストールします。(オプション)
パスは通さず、デフォルトから変えてフルパス入れて実行します。

この記事で convert.exe を実行する際に C:\tools\IM708Q16\convert.exe となっているのはそのためです。

以下の記事を参照してください。

コマンドで画像処理をしたいときに便利な ImageMagick のインストール

画像を一括でリサイズするには

E:\img\smpl というフォルダがあり、そこはいっている png ファイルをすべて 50% に縮小したい場合です。

なお、縮小後のファイルは c というフォルダ内に作ります。
(forfiles のコマンドと併用するため、別フォルダになります。)

E:\img\smpl>forfiles /M *.png /C "cmd /c C:\\tools\\IM708Q16\\convert.exe -resize 50%% @file c\\@file"

forfilesで *.png を抽出して /C で convert.exe を実行。 \ はエスケープが必要なので \\ にしています。出力ファイル名を変えたければ、 @file を cnv_@file に変えて cnv_ を頭につけるくらいのことはできます。

convert.exe -resize [縮小を%で] 入力ファイル 出力ファイル

フォルダを比較するとこんな感じ。


画像とピクセル指定で収縮するには

サンプルとして、300ピクセルのjpgと200ピクセルのjpgを用意しました。

そのまま連結しました。(連結方法は次に書きます。)

リサイズのやり方です。200ピクセルの画像のほうを300ピクセルに伸ばす場合を例にします。

以下、同じ挙動をします。

E:\img\smpl>C:\tools\IM708Q16\convert.exe -resize 300x300 200.jpg 200cnv1.jpg
E:\img\smpl>C:\tools\IM708Q16\convert.exe -resize 300x 200.jpg 200cnv2.jpg
E:\img\smpl>C:\tools\IM708Q16\convert.exe -resize x300 200.jpg 200cnv3.jpg

コマンドオプションは以下のような書式ですが、縦x横の x はそのもの x です。縦と横の比率を変えないで、どちらかのピクセルに合わせたいだけであれば、片方の指定でももう片方をあわせてくれます。

convert.exe -resize 縦x横 入力ファイル 出力ファイル

もし、縦のみ伸ばしたい、横のみ伸ばしたいという場合は、縦x横! として、! をつけます。縦のみ伸ばしたい場合でも、縦!x横 とするのではなく、縦x横! となる点に注意してください。

E:\img\smpl>c:\tools\IM708Q16\convert.exe -resize 200x300! 200.jpg 200cnv4.jpg

(わかりやすいように、下で行う連結のやってあります)

画像を連結

上にある2枚の画像を横に連結する場合です。

E:\img\smpl>C:\tools\IM708Q16\convert.exe +append 300.jpg 200conv4.jpg ap01.jpg

+append で横に連結。入力ファイルを2つ並べて、出力ファイルを指定します。
パスはフルパスでも相対パスでもいけます。

E:\img\smpl>C:\tools\IM708Q16\convert.exe -append 300.jpg 200conv1.jpg ap02.jpg

-append で縦に連結。入力ファイルを2つ並べて、出力ファイルを指定します。
パスはフルパスでも相対パスでもいけます。

結果はこんな感じになります。

横に3連結したい場合。

以下のコマンドのように、ファイルを並べます。最後のファイル名が出来上がるファイルになります。

E:\img\smpl>C:\tools\IM708Q16\convert.exe +append 300.jpg 200conv4.jpg 300.jpg ap03.jpg

縦横2×2でタイルにしたい場合は、ImageMagickにあるmontage.exeを使います。
(縦に連結してから横に連結するという2度やるなら convert.exe でもできます。)

E:\img\smpl>c:\tools\IM708Q16\montage.exe 300.jpg 200cnv1.jpg 200cnv1.jpg 300.jpg -tile 2x2 ap4.jpg

結果はこちら。

画像ファイルの形式を一括で変換したい

convert.exe を使えばできます。

準備として jpg のフォルダを作り、そこに変換したい jpg ファイルを集めました。

JPG形式からPNG形式への変換例です。

E:\img\smpl\jpg>forfiles /M *.jpg /C "cmd /c c:\\tools\\IM708Q16\\convert.exe @file @fname.png"

convert コマンドは便利で、拡張子を指定してあげれば自動で判別して変換してくれます。

convert 300.jpg 300.png とすれば、 300.jpg を PNG 形式の 300.png というファイルを作ってくれます。(書き換えではありません)
forfiles のコマンドとしては、 /M *.jpg なので、 @file には 300.jpg のように拡張子を含めてファイル名が入るので、convert.exe にはそれが渡されます。主力ファイル名は、300.png としたいので、 @fname で 拡張子より手前を持ってきて、 300 に .ong をつける形で convert.exe に渡します。

ここでは拡張子が違うので /M *.jpg に変換後のファイルがひっかかることはなく、同じフォルダ内に変換後のファイルを置いても問題ありません。

実は、ネットでダウンロードしたファイルが、拡張子としては jpeg だったのですが、中身はheic形式というものがありました。ペイントで名前をつけて保存をしようとすると、形式がHEICになるわけです。これをペイントで見る分にはいいのですが、Windowsフォトビューワーで見る場合は色がおかしくなります。(表現としては正しくありませんが。)この場合、とりあえず、ファイルの拡張子を付け替えてから、HEIC形式からJPGやPNGへの変化をしました。

forfiles /M *.jpg /C "cmd /c rename @file @fname.heic"
forfiles /M *.heic /C "cmd /c c:\\tools\\IM708Q16\\convert.exe @file @fname.png"

ImageMagick は案外重宝

他にもネット上を探せばいろいろな使い方がみつかると思います。
これだけでなく数々のオプションがあります。

大昔はPanit Shop Proを購入して使っていたこともあったけれど、そこまでのことはやらなくなりました。GIMP もインストールしたけれど殆ど使っていません。

自分がやりたいことはコレくらいで足りると言うか、あとはmapaintでやります。