デジイチのレンズ付け替えを大変そうだなぁとしみじみ思うためのシェルスクリプト
EXIFとレンズ
昔はついていなかったけれど、今はデジタル一眼(レフ)カメラで撮影した写真のメタ情報である EXIF にレンズの情報が乗っているらしい。
EXIF 規格本体に追加されたのは最近みたいで、カメラメーカーがやる気がないため まだ Maker Note に格納されるのも多いようだ。
EXIF のどのタグに乗っかるのかはメーカーというかカメラによって異なる。 EXIF の最近の規格だと LensMake(A433.H),LensModel(A434.H),LensSerialNumber(A435.H) なるものがあって、それで見れる。 例えば、exiv2(1) を使って、下記コマンドで簡単に見れる。( 出力は Canon EF 85mm f/1.2L II の場合 )
カメラに依るが Make Note にしか載っていないものでも exiv2 が対応していれば見ることができる。
ただExif.Canon.LensModel
といったようにキー (Exiv2 key)を適切なものに変える必要が有る。
あと、当然ながらレンズ取り換えの出来ないコンデジや携帯電話・スマホはそもそもレンズ情報を格納していないようである(焦点距離とかの光学的な情報は乗っけてくれているので問題にはならない)。
「レンズ付け替え大変そうだなぁ」としみじみ思うために
デジイチで取った写真をいっぱいもらった時に、
- 写真の撮影日時、レンズ名称をリスト化し、
- 撮影日時でソートすれば、
- レンズ名称が変わったところでレンズを付け替えたのがわかる!
そしてその付け替えタイミングや回数を見れば、標題どおりレンズ付け替えを大変そうだなぁとしみじみ思うことができるのではないか? ――ということで以下のシェルスクリプトを作った。 Exif.Photo.LensModel から取得できない時は Maker Note を見て試してみるようにしてある。
上記を適当な名前で保存して(仮に ichigen_taihen.sh とでもする)画像ファイルがあるディレクトリをカレントディレクトリとして、 下記を実施すると CSV 形式でファイル名、撮影日時、レンズ名のリストがでてくる。 そう、撮影日時のソートはだるいので ichigan_taihen.sh の外側で sort(1) をパイプで繋げてやっている。
あとは、眺めるだけ。
ただ、「デジイチのレンズ付け替えを大変そうだなぁ」と思うのに必要な「他人がレンズを変えまくって撮影した写真(しかも EXIF が付いたレタッチ前のもの)」が筆者の手元にないのが目下の問題である。
参考文献
- "デジタルスチルカメラ用 画像ファイルフォーマット規格 Exif 2.3", CIPA DC-008-2010 / JEITA CP-3451B
- Exiv2 - Image metadata library and tools, Exiv2