[Emacs] ImageMagickとの連携でEXIF情報を取り除く
JPGファイルからEXIFやGPSなどの付加情報を取り除きたいことがある。
今までは専用のツールを使っていたが、ふとImageMagickでできるのでは?と調べたら、案の定できることがわかったのでメモ。
$ convert -strip 入力ファイル 出力ファイル
このように-strip
オプションを使えるだけでよい。入力と出力を同じファイル名にすれば上書きになるが、簡単に
$ mogrify -strip 入力ファイル
としても上書きできる。
さらにEmacsと組合せることで、GUIなソフト並に手軽に、EXIF情報の掃除ができる。
要するに、dired-do-shell-command
を使うだけで、別にImageMagickに限った話ではない。Emacsユーザーにはお馴染の話だろうが、やっぱりEmacsは最高だと思ったので、あえて説明しておく。
Diredバッファを開き、変換したいファイルを選択しておく。
/Users/bird/images:
total used in directory 28960 available 6194084
drwxr-xr-x 9 bird staff 306 5 13 09:42 .
drwxr-xr-x@ 164 bird staff 5576 5 13 09:39 ..
* -rw-r--r--@ 1 bird staff 2272263 5 5 17:27 image1.jpg
* -rw-r--r-- 1 bird staff 1849400 5 5 17:27 image2.jpg
-rw-r--r-- 1 bird staff 2443233 5 5 17:27 image3.jpg
!
キー押下でdired-do-shell-command
を実行すると、次のようなプロンプトが表示されるはず。
! on * [2 files]:
ここで、次のようなコマンドを入力する。
convert -strip ? new-`?`
` ? と
?
`がファイル名に置き換わり、この例では二つのコマンドがそれぞれ実行される。
convert -strip image1.jpg new-image1.jpg
convert -strip image2.jpg new-image2.jpg
これでEXIF等がないJPGファイルが得られる。Diredを使えば、ファイル名を指定する手間が減るので便利だ。
もし上書きでいいのであれば、mogrifyを使って
mogrify -strip
とすれば、さらに手軽。しかし、その分、誤ってオリジナルを消してしまうリスクが増えるので、こっちは覚えないほうがいいかも。
ちなみに、 ?
と`?`
の違いは、 ?
が前後にスペースが必要なのに対して、`?`
はスペースが使えない場所で使う。