2006 年 6 月の履歴(もしくは日誌)


2006 年 6 月

6 月 21 日

iPhoto から画像のメタデータを抽出

画像ファイルの Exif を読み込んだりするのはいろいろツールがあるんだけど,画像を沢山登録して題名とかコメント等を付けて整理して,さらにメタデータを XML で取り出すなんてツールはないものでしょうか.

ぼくは Mac OS X 上で iPhoto を使って画像を整理しているので iPhoto からメタデータを書き出したいって考えるのは自然な事.iPhoto では Plug-in を使って機能が拡張できるのですが,iPhoto 上で整理したアルバムをなにかしらに書き出すプラグインもいろいろ出ているようです.

iPhoto がもともと持っている機能として HTML での書き出しや RSS を書き出す Photocast っていう機能があるのですが,それはメタデータを書き出すのが目的ではなくて,公開してしまうのが目的です.ですから,ぼくの本当の目的であるメタデータを書き出して,それを加工してから Web で公開という目的からするとなんか違う.

RDF/XML を書き出すプラグインも公開されているようだけど,ぼくの環境では動きませんでした.おそらく iPhoto 5 までの対応で iPhoto 6 に対応していないのでしょう.

しかたがないから自分でなんか書いてみる事にしました.

今回は Perl で iPhoto のメタデータが格納された AlbumData.xml というファイル名の XML ファイルからデータを抽出することにしました.Mac OS X では,アプリケーションプログラムの設定とかデータが,Property List っていう XML ファイルで書かれているものが多く,iPhoto で整理したアルバムの情報も XML ファイルとして保存されていました.

さっそく CPAN を検索して使えそうなものを探します.Mac::iPhoto ってのがあったけど,すげー動作が遅いです.iPhoto に登録されている画像が多いと,Property List の XML をパースするのに時間がかかっているみたい.

それで Mac::Tie::PList を試してみたら,これは速い.

Mac::Tie::PList をいろいろいじってみたら,iPhoto で整理したアルバムの画像のタイトルやコメントを取得でいることがわかりました.足りないことは Image::ExifTool で Exif を読むことにしました.

RDF/XML への書き出しもなんかツールを使おうと思ったけど,とりあえずツールは特に使わないで書いてみました.Terminal.app からコマンドとして動かして,アルバム一覧の表示をする機能と,アルバムの ID を指定して RDF/XML を書き出すところまではできました.まだもう少しいろいろやりたいところが残ってます.

RDF/XML への書き出しもいいけど,GPX の書き出しもできるようにしようと思っています.

GPSPhotoLinkerハンディ GPS のトラックログ(軌跡情報)から画像ファイルに位置情報を埋め込んでおいて,iPhoto で整理した後で GPX に書き出すわけです.したら Google Map API を使って,画像と地図とを関連づけることが既存のものを利用して簡単にできそうです.

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20060621n1 TrackBack