ひとりごと

新しい記事:[2332]  古い記事:[2330] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2008/11/09 (日)

・ EXIF を表示できるようにする

ひとさまの写真コーナーに遊びにいくと、綺麗な写真と一緒にシャッタースピードや絞り・レンズの種類などがコメントで添えられていることが多いです。私の場合は初心者なのでそれを見てどうこうということは無いのですが、自分で撮った写真のデータを見て『ここをああしておけばよかったかも』などと思うことは多々あります。が、このコメントを書くのって面倒なのですよね。

てことで、おっきいファイルの表示で初期段階では実装していなかった EXIF の表示もやってみました。カメラの機種 / シャッタースピード / 絞り / ISO感度 / 焦点距離 / レンズ名称 が出るようになっているので、必要な情報は一通り網羅しているのではないかと思います。

(動作サンプル)
はとぽっぽ

ところで、この処理の追加には苦労させられました。EXIF の枠組みはカメラメーカーが違っても共通なので シャッタースピードとか絞り値 なんかは PHP のライブラリを使って読み出すことができるんです。が、レンズに関する情報は MakerNote と呼ばれるエリアにメーカー独自のフォーマットで格納されています。PHPのライブラリではそのブロックを丸ごとバイナリで取り出すことしか出来なかったので、先人の努力の結晶を参考に、PHPからバイト並びに注意しつつ substr() とか unpack() とかを駆使してMakerNoteのディレクトリエントリを抽出するコードを書きました。で、サンプルデータを表示してみて とあることが判明しました。

レンズ情報のブロックは暗号化されています

うが、、、。いろいろ調べてみると、カメラのシリアル番号と通算撮影枚数をキーにして暗号化してあるのだそうです。うむむ、なんでそんなもん暗号化するかな~。

そのまま取り出せる情報としては「ワイド端/テレ端の焦点距離とそのときの最小絞り」がありましたのでレンズをある程度特定することは可能だったのですが、18-55 と VR18-55 の区別が付かないのをどうしようかな~と困っていたのです。で、もう少し調べてみると、ExifTool では復号化してレンズ名称を表示できることがわかりました。portsにもあったので早速インストールしてみました。

% exiftool -s -s -s -lensid hoge.jpg
AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G

がーーーん、こんなに簡単に表示できたなんて。これまでの苦労はいったい・・・(笑)。ということでスゴい回り道をしましたが、なんとかレンズ名称も表示できるようになりました。ぱちぱちぱち

□ 関連記事

[つっこみ]
11/10( Y.Kumagai )
まるで私のお仕事です(T^T) Exifの異常、解像度、アスペクト比、展開サイズの不整合、撮影時回転の有無、画像本体、サムネイルの破損などなど、数十万点の写真の検品、販売の是非のオートメーション(略
11/11( たかたに )
あれま、そっち方面のお仕事なのですか。正常なExifでも追っかけていくのは骨が折れるというのに、異常なのもあるとなると・・・考えたくないですー(^_^)。

新しい記事:[2332]  古い記事:[2330] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)