convertでコマンドでサクッと画像編集

gimpなどのGUIを立ち上げずに、コマンドラインからサクッと画像の編集を行ったり、大量の画像を一括でトリムしたりする方法を伝授したいと思います。

GUIを使った方が、画像の隅々まで見渡して微調節ができると思います。しかし、「100枚のpng画像をjpgに変換する」、「サイズを全て1920×1080に統一する」といった作業が必要になった場合、GUIで1枚1枚処理するわけにもいきません。

そういった状況で役に立つのがImageMagickのconvertコマンドです。

convertコマンドをインストールする

convertコマンドは画像編集ソフトウェアImageMagickをインストールすることで使えるようになります。

$ brew install imagemagick

Ubuntuの方はapt-getからインストールできます。

画像フォーマットの変更

画像フォーマットの変更です。何も指定せずにinput_image, output_imageを指定します。outpu_imageに指定された拡張子にて出力されます。

$ convert imput_image.png output_image.jpg

例:pngをjpgに。

pngなどの透明度レイヤーのある画像をjpgに変更すると、透明部分が真っ黒になります。それを回避するためには、-flattenオプションを付けます。

$ convert imput_image.png -flatten output_image.jpg

画像のリサイズ

画像のリサイズを行います。

[ パーセント指定 ]
$ convert input_image.png -resize 50% output_image.png
[ サイズ指定 縦横比固定、サイズ内に収まるよう ]
$ convert input_image.png -resize 500x400 output_image.png
[ サイズ指定 縦横比固定、サイズ内で目一杯拡大 ]
$ convert input_image.png -resize 500x400^ output_image.png
[ サイズ指定 縦横比を無理やり変更 ]
$ convert input_image.png -resize 500x400! output_image.png
[ パーセント指定 ]
$ convert input_image.png -resize 50% output_image.png

convertコマンドでのサイズ指定は、パーセント指定や縦横のピクセル数を指定することができます。

画像の回転

画像を回転させます。単位がdegree(度)です。

$ convert input_image.png -rotate 20 output_image.png

画像の一括変更

画像を一括で変更するためには、convertコマンドに代わってmogrifyコマンドを使用します。*(アスタリスク)によるワイルドカードが指定できます。

convertコマンドではoutput_imageを指定して処理後の画像を書き出していましたが、mogrifyコマンドは基本的に元ある画像ファイルを上書きします。なのでmogrifyコマンドではoutput_imageは指定しません。(ファイルフォーマットの変更など、一部の動作では上書きされず、コピーが作成されます。)

[ カレントディレクトリのpng画像を全てjpgに変換 ]
$ mogrify -format jpg *.png

[ 対象画像を全て50%に縮小 (IMG_0212.png, IMG_0213.png, ...) ]
$ mogrify -resize 50% IMG_*.png

[ 対象画像の回転 (image1.png, image2.png, ...) ]
$ mogrify -rotate 20 image*.png

[ カレントディレクトリのjpg画像qualityを変更 ]
$ mogrify -quality 50 *.jpg

output_imageを指定しないことを除けば、convertコマンドと同じように使用することが可能です。

以上、convertコマンドにてコマンドラインから画像を編集する方法についてでした。