exiftoolを導入しました
公式サイトはこちら
ExifTool by Phil Harvey
OSXのインストールパッケージなので導入は楽です
コマンドライン上で
exiftool file.jpg
と入力すると嫌がらせのように大量の情報が吐き出されます
標準出力(ターミナルの画面上だけ)だと使いづらいので
exiftool file.jpg > out.txt
のように使った方が良いでしょう
目的のexif情報だけ取得したい場合は
exiftool -Model file.jpg
(カメラの機種名)
exiftool -Lens file.jpg
(レンズの機種名)
などのように記述しますが、問題はexif情報の名称(タグ)がかなりフリーダムなところで、exifを生成したアプリでかなり違いが出てきます
例えばレンズ名を取得する場合、あるアプリでは上記で良いものの、別のアプリだと
exiftool -LensID file.jpg
でないと正しく取得できなかったり、場合によってはexif自体消されてしまっているわけです
撮影情報を取得するための正確なexif名を知りたい時は
exiftool -s file.jpg
で一覧が見られます
webに上げ続けた画像の中には少なからずというより、大半が不完全なexif(特にレンズ名)になっていました…
正確な撮影情報を取得するためにはもう一度オリジナルを現像して…なんてやってられません! そうだ!閃めいた!!!
画像ファイル名だけ参照して
exifはオリジナルからぶっこ抜く
理屈としては、アップした画像ファイルのフォルダを参照して、ループ文で回します
for file in *.jpg
こんな感じ
次にオリジナルファイルのあるフォルダを参照して、同名のNEFファイルなりからexifをぶっこ抜けば良いわけです
filen="${file%.*}"
拡張子.jpgを削除して
exiftool -LensID "${PASS}/${filen}".NEF
同名のNEFファイルからレンズ名取得
※変数PASSで事前にNEFファイルのあるフォルダパスを取得しておきます
さらに取得したexif情報をまとめてsedコマンドで、すで存在するhtml文の同名のjpegファイル名を記述した行の次に挿入するといったことも簡単にできます…というかやりました(o^-^o)
—
過去(軍曹以前)のアーカイブは全部で180ページくらいあるのですが、全てフォルダ別に管理しているので、まずfor文でフォルダを順次見て行き、フィルダ内をさらにループ文で回してjpegファイルを見て行き…という手順です
こちらは全てコンデジ画像なのでNEFを参照するまでもなく、ISO/焦点距離/SS/f値を直接jpeg画像から抜き出してhtml文を書き換えるというものでした
大体30分くらいで全て完了! 修正されたhtml文のアップの方が面倒だったとうオチですw
欠点としてはexiftoolちょっと重いです…シェルの処理の大半の待ち時間はここ
—
NEFファイルを参照したものは現アーカイブの方です
オリジナルのhtml文とNEFのフォルダを指定して処理しました
http://psychic-wave.com/
こちらはNEFフォルダの所在の問題から完全自動化は諦めて(ページ数は少ないし)ページごとの自動処理です
このブログに統合しました
— 追記(7/29)
EXIF情報取得をJPEG画像に限りexiftoolからImageMagickへ移行しました
こちらの方が倍以上速いです…
残念ながらNEFファイル等には対応していないので、exiftoolとの共存になります
欠点はApertureの値が(f/)xx.xの形ではなく、y/zという整数比のままで出てくるので、取得した「文字列」をバラして小数計算する手間があることくらいでしょうか
例えばこんな感じですね
apertureTmp=`identify -format "%[EXIF:FNumber]" file.jpg` a=${apertureTmp%/*} ; b=${apertureTmp#*/} aperture=`echo "scale = 1 ; $a / $b" | bc`
一覧表示のコマンドはこうです
identify -verbose file.jpg
Aperture以外は、むしろ要らんスペースまで吐き出されるexiftoolの方が面倒です
DLのたびに通知が出てすごく邪魔だったんで助かりました。