画像一括変換は 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でやります。