OLPC XO-1に付いているカメラはVGA解像度(640×480)のCCDカメラなので、まぁ最近の携帯のカメラにも完全に負けているが、内蔵なので(XO-1を持ち歩くシチュエーションでは)ハンディだし、特に女性を撮るときなどは、デジタル一眼にマクロレンズをつけて毛穴の一個一個まで鮮明に撮るよりは、こういういいかげんなものの方が好まれることも多い。
でも、残念なのは、XO-1のRecordアクティビティで撮った写真にはExifの情報が入っていないこと。私のスクリプトで、写真をファイルにすると、ファイル名がデータベースのレコードに記録されているタイムスタンプをもとに作られるからだいたいそれでいいのだけれど、どうも一度撮った写真をもういちどRecordアクティビティで開いて見たりすると、タイムスタンプが更新されて、オリジナルの撮影日時がわからなくなってしまう。ExifサポートについてはすでにTicketがオープンされているものの、次に出るUpdate 1には入りそうもない。
では、当面、自力でなんとかしよう。XO-1には普通のコンピュータと同じく時計が入っているんだから、それをExifに書いてやればいい。ExifToolを使えば簡単にできそうだ。ExifToolはPerlで書かれているから、本ちゃんのコードに入れることは不可能だろうが、どーせその場しのぎだし(笑)、scim-anthyを入れたら同時にPerlも入るようなので、まぁいいんじゃないかと。
で、どうせ撮影日時を入れるんだったら、Geotagも入れたいな、と。もちろん、別にGPSを持ち歩いてトラックを取っておけば、撮影日時をもとにあとからGeotagを入れることができるのだけれど、やっぱり撮影と同時にGPSから場所の情報を読み取って、Geotagを入れることができるというのは、かっこいいなぁ。だいたい、XO-1を持ち歩いてそんなにたくさん写真撮るのかよ?とか、写真をとる前にいちいちXO-1にGPSつないだりするかよ?とか自分でもツッコミを入れたくなるが、そこは目をつぶろう。
GPSからの情報の読み取りはおなじみのGPSBabelを使う。GPSBabelにはガーミンのGPSから現在位置の情報を取って来れるget_posnというオプションがあるので、そこから位置情報を読み出して、ExifToolに渡してやることにすれば良さそうだ。
そんなわけで書いたのがこのPerlスクリプト(GarminのUSB接続のGPS用です)。perlはもちろん、gpsbabelとperl-Image-ExifTool、perl-XML-Simpleをyumでインストールする必要があります。あとGarminのUSB接続のGPSをGPSBabelで使うために、ここに書かれたFedora 7用の設定変更をしてください。
次にPerlスクリプト(addexif)を/usr/binにコピーした後、Recordアクティビティがこいつを呼ぶように、
/usr/shared/activities/Record.activity/model.py
の、savePhotoの中の、
pixbuf.save( imgpath, “jpeg” )
のあとに、
os.system(‘addexif ‘ + imgpath)
を加えてやれば準備完了。
よし、じゃあサンプル写真を撮影しに行こう、と思ったが、このあたりにはめずらしく雪が降ってきたので中止。続きはまたあしたかな。
(附記 2008/01/22)
一枚撮ってFlickrに上げてみました。知らなかったのですが、GPSタグを自動的に読み込ませるには、Flickrのアカウントの設定をしなければいけないんですな。確かにデフォルトでオンになってるとプライバシー保護の観点からするとかなりまずそう。
なんか雨が降っていたので、いいかげんな写真で、しかも操作性は予想通り最低で、時間も掛かるし、画質も劣悪。でも、(map)のリンクを押すとちゃんと地図上に表示される(あたりまえ)のを見ると、まぁこれはこれでいいのかなぁとも思う。
あと修正すべき点は、GPSの時計をExifに埋め込んでいるので、グリニッジ標準時になってしまうところかな。まぁ、Geotagを入れるときは、その方が好ましいかもしれないが。