Windowsの画像とビデオの取り込みをした画像をリサイズしてExif情報を削除する

Windowsに携帯やカメラをつないで、画像とビデオの取り込みをした後、その画像をブログ用に縮小してExif情報を消去するコマンド。Cygwinね。いつも忘れてしまうのでメモ。

mkdir -p upload; for f in *.jpg; do identify "${f}" >/dev/null && convert "${f}" -resize 640x640 -strip upload/$(ls --full-time "$f" | sed -e 's/.*\([-0-9]\{10\}\) \([:0-9]\{8\}\).*/\1_\2/' -e 's/[-:]//g').jpg; done

軽く解説しておく。

mkdir -p upload

リサイズした画像を入れるディレクトリを作る。既にあった場合を考慮して -p オプションを付けておく。

for f in *.jpg; do ...; done

カレントディレクトリの .jpg ファイル一つ一つに処理を実行。

identify "${f}" >/dev/null && ...

ImageMagickで認識できるなら続きを実行。identify コマンドの出力は捨てる。

$(ls --full-time "$f" | sed -e 's/.*\([-0-9]\{10\}\) \([:0-9]\{8\}\).*/\1_\2/' -e 's/[-:]//g')

カレントディレクトリのファイルを ls して更新日時を出し、その日時部分を切り出し、余分な文字 – と : を消す。sed はシェルから実行するので引数の命令をエスケープしておく必要がある。これを新しいファイルの名前にする。写真の取り込みで撮影時刻が反映されていたので、それを利用している。そうなっていない場合はExif情報から取らないとダメかも。

convert "${f}" -resize 640x640 -strip upload/$(...).jpg

ImageMagickでファイルをリサイズ、Exif情報を消去して、出力先ディレクトリに先ほど得た新しいファイル名で書き込む。-resize は指定したサイズ以内に収めてくれるらしい。便利。

以上です。