複数の画像をImageMagickで一括リサイズして別名保存する
- ImageMagick (Windows版) を使います。
- 一括で加工して別名保存はできないみたいだったので、バッチファイル作りました。
サイトに展示してたドット絵を高解像度ディスプレイに対応させるために、補完無しで整数倍に拡大した画像を用意する必要がありました。
そういう経緯で簡単にできる方法を探してて、ImageMagickを知りました。アニメーションGIFにも対応してたので採用しました。
ImageMagickをインストール
ダウンロードページのWindowsのところから、ImageMagickをダウンロードします。
今回は一番上にあった ImageMagick-7.0.4-6-Q16-x64-dll.exe
をダウンロードしてインストールしました。以降で使用する magick
コマンドはver.7から追加されたものらしいので、このページはver.7前提です。
インストールは全てデフォルト設定で行いました。が、後述の mogrify
コマンドを使いたい場合は、『Select Additional Tasks』で『Install legacy utilities (e.g. convert)』をチェックONにする必要があります。(このページに書いてあることをやるだけならば不要です。)
インストールが終わったら、ダウンロードページの下部に書いてある通りにコマンドプロンプトから以下のコマンドを1行ずつ実行して、エラーが出ないことを確認しました。
magick logo: logo.gif
magick identify logo.gif
magick display logo.gif
私の環境では何も問題ありませんでしたが、エラーが出たら別途 Visual C++ Redistributable Packages for Visual Studio 2013を入れる必要があるそうです。
普通に使う
適当な画像 example.gif
を用意してコマンドプロンプトで以下のように実行すると、2倍サイズの画像 example@x2.gif
が作成されました。
magick example.gif -sample 200% example@x2.gif
ここでは用途がドット絵の拡大だったので、補完 (フィルタ) なしで画像サイズを変更できる [sample](https://imagemagick.org/script/command-line-options.php#sample)
オプションを使いました。補間が必要な場合は [resize](https://imagemagick.org/script/command-line-options.php#resize)
オプションを使えばいいみたいです。
一括で別名保存する
たくさんの画像に対して同じことをひとつずつやりたくないので、一括でやる方法を探しました。
ImageMagickには、画像を一括で処理できる mogrify
コマンドがあるみたいです。でも mogrify
は、加工済みの画像を元の画像に上書き保存してしまいました。
それで少し調べたけど見つからなかったので、フォルダ内の全ファイルを magick
で加工して別名保存するバッチファイルを書いてみました。
@echo off
cd /d %~dp0
for %%a in (%1\*) do call :resize %%a
exit /b
:resize
set filename=%~n1
magick %1 -sample 200%% %~p1%filename%@x2%~x1
exit /b
これを highreso.bat
とでもして保存し、パラメータに対象のフォルダのパスを指定して実行します。
highreso.bat C:\path\to\img
するとフォルダ内 (直下) の全画像を200%のサイズに拡大したものを、元のファイル名の末尾に @x2
を付与した名称で別名保存します。
あんまりバッチファイルを書いたことがないので、書き方については以下の記事を参考にさせていただきました。