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 は指定したサイズ以内に収めてくれるらしい。便利。
以上です。