匿名でメッセージを送れる「マシュマロ」を設置しました。

【ImageMagick】コマンドで画像を一括処理(形式変換・リサイズ)する方法

IT
【PR】本記事のリンクには広告が含まれています。

大量にある画像ファイルに対して、同じ処理を繰り返し手作業で行うのは効率的ではありません。

そんなときは、コマンドラインで画像処理ができるImageMagickを用いると便利です。

本記事では、ImageMagickのコマンドを用いた画像の一括処理(形式変換・リサイズ)のやり方についてご紹介します。

ImageMagickの画像処理のやり方を解説!
この記事の内容
  • 画像をpng形式からjpg形式に変換
  • フォルダ内のjpg画像を一括リサイズ
  • 出力先を指定して、形式変換・リサイズをまとめて行う
スポンサーリンク

実施環境

■ハードウェア環境

項目情報
OSWindows 11 Home 64bit
CPUAMD Ryzen 9 5900HX
メモリ16.0 GB LPDDR4X-4266
ストレージSSD:512 GB NVMe HFM512GD3JX013N
ASUS Zenbook 14(UM425QA)

スペックの詳細はこちらの記事に書いています。

■ソフトウェア環境

項目備考
ImageMagickImageMagick 7.1.1-27 Q16-HDRI x64
公式ページからダウンロード

ImageMagickのインストール方法はこちらの記事でご紹介しています。

■検証に使用した画像ファイル

ファイル名サイズ解像度
01.png1.11 MB1080×720
02.png2.32 MB1138×720
03.png1.87 MB1078×720

元画像はPixabayからダウンロードしました。

ImageMagickを使う準備

ImageMagickで画像処理を行うために、まず最初にコマンドプロンプトを立ち上げます。

cdコマンドを用いて、画像が入っているフォルダをカレントディレクトリに指定します。

以降の操作は、カレントディレクトリ内の画像に適用されるものとします。

画像ファイルの形式変換

ImageMagickを用いて、画像ファイルの形式変換を行うコマンドをご紹介します。

  • 1つの画像ファイルの変換
  • 複数の画像ファイルの変換
  • フォルダ内のすべての画像を一括変換

それぞれについて、以下で説明します。

1つの画像ファイルの変換

1つの画像ファイルをpng画像からjpg画像に変換するコマンドは、次の通りです。

magick convert 01.png 01.jpg
コマンド入力ファイル出力ファイル
convert01.png01.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 %t02.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 700x01.jpg01.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の使い方 応用編

「応用編」というのは言い過ぎかもしれませんが、ここまで見てきた処理を一度にまとめて行うコマンドをご紹介します。

次のコマンドは、以下の内容の処理を行います。

  1. 「output」という名前のフォルダを作成
  2. カレントディレクトリ内のすべてのpng画像に対して、以下の処理を行う
    • 出力先を「output」フォルダに指定
    • jpg画像に変換する
    • 幅700 px(高さは任意)にリサイズする
    • 画像品質を80にする
mkdir output && magick mogrify -path output -format jpg -resize 700x -quality 80 *.png
  • コマンドを実行すると、カレントディレクトリ内に「output」というフォルダが新規作成され、その中に変換されたjpg画像(幅700 px、画像品質80)が生成される
  • 「mkdir」コマンドで、「output」という名前のディレクトリを作成
  • 「&&」によって、「mkdir」コマンドが成功したときのみ「magick~」コマンドを実行
  • 「-path」オプションで、カレントディレクトリ内の「output」フォルダを出力先として指定

デジカメ撮影した写真を一括でリサイズする

下の例は、上の応用に加えて、デジカメなどで撮影したときに付与される「Exif情報」を削除し、一括で画像をリサイズするコマンドです。

mkdir output && magick mogrify -path output -format jpg -resize 500x  -quality 80 -strip *.JPG
  • コマンドを実行すると、カレントディレクトリ内に「output」というフォルダが新規作成され、その中に変換されたjpg画像(幅500 px、画像品質80)が生成される
  • 対象はJPG画像ファイル
  • 「-strip」オプションで、写真ファイルに付与されたExif情報を削除
  • 縦写真の場合も、上のコマンドをそのまま適用すればよい

参考
ImageMagick – 画像から EXIF 情報や余分なコメント領域を削除するには|てくめも@ecoop.net

まとめ

以上、ImageMagickのコマンドを用いた画像処理の方法をご紹介しました。

下の記事では、動画や音声を編集するフリーソフトFFmpegのインストール方法をご紹介しています。

もしお時間があったら、覗いてみてください。

「FFmpeg」をWindows11にインストールする方法

えのきつね
えのきつね

最後まで読んでくださり、ありがとうございました!