大量にある画像ファイルに対して、同じ処理を繰り返し手作業で行うのは効率的ではありません。
そんなときは、コマンドラインで画像処理ができるImageMagickを用いると便利です。
前回の記事では、Windows11にImageMagicをインストールする方法をご紹介しました。
本記事では、ImageMagickのコマンドを用いた画像の一括処理(形式変換・リサイズ)のやり方についてご紹介します。
実施環境
■ハードウェア環境
項目 | 情報 |
---|---|
OS | Windows 11 Home 64bit |
CPU | AMD Ryzen 9 5900HX |
メモリ | 16.0 GB LPDDR4X-4266 |
ストレージ | SSD:512 GB NVMe HFM512GD3JX013N |
スペックの詳細はこちらの記事に書いています。
■ソフトウェア環境
項目 | 備考 |
---|---|
ImageMagick | ImageMagick 7.1.1-27 Q16-HDRI x64 公式ページからダウンロード |
ImageMagickのインストール方法はこちらの記事でご紹介しています。
■検証に使用した画像ファイル
ファイル名 | サイズ | 解像度 |
---|---|---|
01.png | 1.11 MB | 1080×720 |
02.png | 2.32 MB | 1138×720 |
03.png | 1.87 MB | 1078×720 |
元画像はPixabayからダウンロードしました。
ImageMagickを使う準備
ImageMagickで画像処理を行うために、まず最初にコマンドプロンプトを立ち上げます。
cdコマンドを用いて、画像が入っているフォルダをカレントディレクトリに指定します(※)。
以降の操作は、カレントディレクトリ内の画像に適用されるものとします。
画像ファイルの形式変換
ImageMagickを用いて、画像ファイルの形式変換を行うコマンドをご紹介します。
- 1つの画像ファイルの変換
- 複数の画像ファイルの変換
- フォルダ内のすべての画像を一括変換
それぞれについて、以下で説明します。
1つの画像ファイルの変換
1つの画像ファイルをpng画像からjpg画像に変換するコマンドは、次の通りです。
magick convert 01.png 01.jpg
コマンド | 入力ファイル | 出力ファイル |
---|---|---|
convert | 01.png | 01.jpg |
- 「convert 〈入力ファイル〉〈出力ファイル〉」という書式
- 実行すると、「01.png」は保持されたまま、新規で「01.jpg」が生成される
- 今回の場合は、変換前後でサイズが「1.11 MB→163 KB」に変化した
複数の画像ファイルの変換
複数の画像ファイルを指定して、png画像からjpg画像に変換するコマンドは、次の通りです。
magick convert -set filename:f %t 02.png 03.png %[filename:f].jpg
コマンド | オプション | 入力ファイル | 出力ファイル |
---|---|---|---|
convert | -set filename:f %t | 02.png 03.png | %[filename:f].jpg |
- 実行すると、入力ファイルと同じ名前の出力ファイルが新規で生成される
- ex. 「02.png」は「02.jpg」と出力される
- オプションの「-set filename:f %t」は「変数filename:fに%tをセットする」という意味
- %tはファイル名を意味する
- 変数にセットした文字列は、%[filename:f]で呼び出すことができる
参考
・[書籍自炊] よく使うImageMagickのコマンドメモ | akamist blog
フォルダ内のすべての画像を一括変換
カレントディレクトリに指定したフォルダ内のすべてのpng画像をjpg画像に変換するコマンドは、次の通りです。
magick mogrify -format jpg *.png
コマンド | オプション | 入力ファイル |
---|---|---|
mogrify | -format jpg | *.png |
- 「mogrify (オプション)〈入力ファイル〉」という書式
- 「mogrify」コマンドは、複数ファイルに対してまとめて処理を行うときに使われる
- 実行すると、元のpng画像は保持されたまま、新規でjpg画像が生成される
画像ファイルのリサイズ
mageMagickを用いて、画像ファイルのリサイズを行うコマンドをご紹介します。
- 1つの画像ファイルをリサイズする
- 複数の画像ファイルをリサイズする
- フォルダ内のすべての画像を一括リサイズ
それぞれについて、以下で説明します。
1つの画像ファイルをリサイズする
下の例は、1つのjpg画像を幅700 px(高さは任意)にリサイズするコマンドです。
magick convert 01.jpg -resize 700x 01.jpg
コマンド | オプション | 入力ファイル | 出力ファイル |
---|---|---|---|
convert | -resize 700x | 01.jpg | 01.jpg |
- 「convert〈入力ファイル〉-resize (width)x〈出力ファイル〉」という書式
- 実行すると、リサイズ前の画像は残らず、上書き保存される
- 出力ファイル名を入力ファイルと別名にすると、リサイズ前の画像も保持される
- 縦横のアスペクト比を無視してリサイズしたい場合は「-resize (width)x(height)!」と書く
- 今回の場合は、リサイズ前後で解像度が「1080×720→700×467」、サイズが「163 KB→78.1 KB」に変化した
参考
・画像の拡大・縮小 | | Imagemagickの使い方日本語マニュアル
複数の画像ファイルをリサイズする
下の例は、2つのjpg画像を幅700 px(高さは任意)にリサイズするコマンドです。
magick convert -set filename:f %t 02.jpg 03.jpg -resize 700x %[filename:f].jpg
コマンド | オプション | 入力ファイル | 出力ファイル |
---|---|---|---|
convert | -set filename:f %t -resize 700x | 02.png 03.png | %[filename:f].jpg |
- 実行すると、リサイズ前の画像は残らず、上書き保存される
- 「-set filename」のオプションは、前述の「複数の画像ファイルの変換」を参照
フォルダ内のすべての画像を一括リサイズ
下の例は、カレントディレクトリに指定したフォルダ内のすべてのjpg画像を幅700 px(高さは任意)にリサイズするコマンドです。
magick mogrify -resize 700x *.jpg
コマンド | オプション | 入力ファイル |
---|---|---|
mogrify | -resize 700x | *.jpg |
- 「mogrify (オプション)〈入力ファイル〉」という書式
- 実行すると、リサイズ前の画像は残らず、上書き保存される
jpg画像の品質の指定
下の例は、カレントディレクトリに指定したフォルダ内のすべてのjpg画像の品質を80に設定するコマンドです。
magick mogrify -quality 80 *.jpg
コマンド | オプション | 入力ファイル |
---|---|---|
mogrify | -quality 80 | *.jpg |
- 「mogrify (オプション)〈入力ファイル〉」という書式
- 「-quality」オプションは、プロパティとして「1(最低画質)~100(最高画質)」の数字を指定できる
- 実行すると、変更前の画像は残らず、上書き保存される
- 今回の場合は、変換前後でサイズが「78.1 KB→44.7 KB」に変化した
参考
・画像形式・フォーマットの変換 | | Imagemagickの使い方日本語マニュアル
ImageMagickの使い方 応用編
「応用編」というのは言い過ぎかもしれませんが、ここまで見てきた処理を一度にまとめて行うコマンドをご紹介します。
複数のpng画像を一括でjpeg変換・リサイズする
次のコマンドは、以下の内容の処理を行います。
- 「output」という名前のフォルダを作成
- カレントディレクトリ内のすべてのpng画像に対して、以下の処理を行う
- 出力先を「output」フォルダに指定
- jpg画像に変換する
- 幅700 px(高さは任意)にリサイズする
- 画像品質を80にする
mkdir output && magick mogrify -path output -format jpg -resize 680x -quality 80 *.png
- コマンドを実行すると、カレントディレクトリ内に「output」というフォルダが新規作成され、その中に変換されたjpg画像(幅680 px、画像品質80)が生成される
- 「mkdir」コマンドで、「output」という名前のディレクトリを作成
- 「&&」によって、「mkdir」コマンドが成功したときのみ「magick~」コマンドを実行
- 「-path」オプションで、カレントディレクトリ内の「output」フォルダを出力先として指定
写真のExif情報を削除して一括でリサイズする
下の例は、上の応用に加えて、デジカメなどで撮影したときに付与される「Exif情報」を削除し、一括で画像をリサイズするコマンドです。
mkdir output && magick mogrify -path output -format jpg -resize 550x -quality 80 -strip *.JPG
- コマンドを実行すると、カレントディレクトリ内に「output」というフォルダが新規作成され、その中に変換されたjpg画像(幅500 px、画像品質80)が生成される
- 対象はJPG画像ファイル
- 「-strip」オプションで、写真ファイルに付与されたExif情報を削除
- 縦写真の場合も、上のコマンドをそのまま適用すればよい
参考
・ImageMagick – 画像から EXIF 情報や余分なコメント領域を削除するには|てくめも@ecoop.net
まとめ
以上、ImageMagickのコマンドを用いた画像処理の方法をご紹介しました。
下の記事では、動画や音声を編集するフリーソフト「FFmpeg」のインストール方法をご紹介しています。
もしお時間があったら、覗いてみてください。
▶「FFmpeg」をWindows11にインストールする方法
最後まで読んでくださり、ありがとうございました!
(ご質問・ご感想はこちらからどうぞ)