Picasa で画像につけたコメントを Perl スクリプトで表示する。Image::IPTCInfo モジュールを使う。
Picasa を使うと,画像にコメントを付けることができる。JPEG 画像であれば,コメントはその画像の IPCT 情報に保存される ( Picasa ヘルプ センター | コメントとは何ですか。)。
IPTC 情報は,他の画像ビューアでも見ることができる。IrfanView (日本語版,オリジナル) であれば,「Image (画像)」→「Information (画像の情報)」→「IPTC info (IPTC 情報)」→「Caption」で表示と書き込みが可能。IrfanView では,「Image」→「Information」→「Comment」でもコメントが書き込めるようになっているが,Picasa はそこを読まない。
さて,Picasa でつけたコメントを一覧表示したいことがある。Cygwin であれば Perl が使えるので,スクリプトを書けば表示できる。
環境は,Windows XP Professional Edition, Cygwin 1.5.25, Perl 5.8.8 である。
画像の IPTC 情報は,Image::IPTCInfo モジュールで読み取りや書き込みができる。最新版は Image::IPTCInfo 1.95 である (Image::IPTCInfo - Perl extension for extracting IPTC image meta-data)。コメントは日本語でも問題なく表示される。Image::IPTCInfo では,何も変なことをしていない。Shift JIS でつけたコメントは,そのまま Shift JIS で表示される。Cygwin も Linux のように cpan コマンドが使えるのでインストールしておく。
Perl スクリプトは次の通り。例えば listcaption.pl などとする。
コメント情報は,Attribute('caption/abstract') で取得できる。全体を eval で包んでいることに注意。これをやらずに,単に
とした場合,コメントがついている画像なら問題ないが,コメントがついていない画像に当たると,次のメッセージが表示されて死ぬ。コメントがついていない場合,new で失敗するかと思い eval をしかけてみたが,分岐できなかった。コメントがあってもなくても,new は成功する。
ディレクトリ以下すべての画像について調べたい場合は,find と併用する。ファイル名やディレクトリ名に空白が含まれている場合を想定して,find には -print0,xargs に -0 スイッチをつけてやるとよい (Manpage of XARGS)。
そういえば,最近の find は -print がデフォルトになっている。昔は -print をつけないと,検索だけして何も表示しないで終わっていた。
ところで,Picasa は,JPEG 以外の画像のときは,コメントをどこに保存しているのだろうか? (調べていない)
Posted by n at 2008-03-06 23:44 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957