[Mac] コマンドラインで画像をクロップする

画像をクロップする処理をコマンドラインで実行してみた。

Mac にデフォルトで入っている sips というコマンドでもクロップはできるが、クロップの原点を指定することができないようだ。なので ImageMagick を使う。

環境:macOS Catalina Version 10.15.6(英語環境)

(0)ImageMagick のインストールを済ませておく。

(1)以下のようなコマンドを実行すれば、原点を指定してクロップができる。

$ convert [元画像] -crop [幅]x[高さ]+[左上からの位置x]+[左上からの位置y] [出力画像]

例えば以下のようになる。

$ convert input.png -crop 1440x1080+240+0 output.png

指定フォルダ内の PNG 画像に対して一括処理する場合は以下のシェルスクリプトを作成する(生成する画像のファイル名に v2 と付ける場合)。

#!/bin/sh
DIRPATH=$1

for FILE in ${DIRPATH}*.png
do
convert "${FILE}" -crop 1440x1080+240+0 "${FILE%.png}v2.png"

done

シェルスクリプトに crop.sh と名前をつけたとすると、$ chmod 755 crop.sh を実行して実行権限を付与、$ ./crop.sh で実行する。

参考:
手動で位置決めして切り抜き(crop)するのは面倒!ツール導入で一瞬にして完了して週に2分程度のコストとストレスを削減できた話 #ImageMagick | rabirgo
https://rabirgo.net/i-want-to-crop-this-area-automatic/

ImageMagick の画像 crop – Qiita
https://qiita.com/yoya/items/62879e6e03d5a70eed09

[Mac] 指定フォルダ内の画像を自動でリサイズする – with a Christian Wife
https://wacw.cf/2018/11/12/resize-phots-in-a-specific-folder-automatically/