EXIFタグの投稿

PHP で EXIF 読み書きする phpExifRW
ここんところ、MacBook にトラブル発生していたため、プラグイン開発が滞ってしまいました。なんとか環境を復活させまして、そろそろ再開することにします。今までは Mac OS X 10.4 “Tiger” で粘っていましたが、心機一転して Leopard にしました。
で、Ktai Entry には、投稿日時指定機能を付ける予定ですが、添付画像の撮影日時を投稿日時とする機能は、画像回転機能と相性が悪いことが分かっています。画像回転すると EXIF 情報が落ちてしまうため、撮影日時が読めなくなり、投稿日時が設定できなくなるのです。
これの解決には、回転した画像に EXIF を記録してやるのがてっとり早いです。以前、PHP Exif Library の利用を検討しましたが、新メンテナー募集中ということと、ライブラリーの規模が大きいため、採用しないことにしました。
今回目をつけたのが、phpExifRW というライブラリーです。こちらはもっと古くて 2005年5月30日が最終バージョンです (3年前!)。単に古いのか、枯れてしまっているのかは分かりませんが、コンパクトにまとまっているので、ソースコードを精査して、使えるかどうか検討したいと思います。
ただ、これを使うとしても、回転前の画像を一度ファイルに落とす必要はありそうです。あまり一時ファイルは作りたくないのですが、やむを得ないでしょうか。

写真撮影日時を投稿日時にしてみる
きょうリリースした Ktai Entry 0.8.3 ですが、実は Mail_mimeDecode.php の内部関数 (コメントで @access private
と書いてある関数) を外から使うという凶悪な実装になっています。あまり行儀のよいスタイルとは言えないので、早めに修正したいところです。
で、それだけ修正しても仕方ないので、投稿日時の指定機能を付けることにしました。DATE: 2008-05-25 19:39
などと書けば、その日時になるという仕組みで、実装はとても簡単です。未来の日付にすると、WordPress コアの機能で自動的に予約投稿にもなります。
ただ、それだけ実装してもまるで芸がないので、「写真を添付したときは、写真の撮影日時を投稿日時とする」オプションを盛り込む予定です (「DATE: 1」と書いたら1枚目の写真の日付とする etc)。これは、旅のリアルタイムレポートでは絶大な効果がありまして、「写真を撮って文章を書いているうちに圏外になってしまった」とき、事後送信しても撮影した時刻が投稿日時となるため、記録という意味では正確なウェブログになります。この手法は、いずみちゃんの「Feel Fine!」で実践でされているものです (P BLOG + オリジナルの投稿スクリプトという構成)。
Ktai Entry の処理では、まずマルチパートを解析し (画像はまだオンメモリー)、次に本文だけ投稿処理をして、それから写真を保存して公開します。exif_read_data()
は画像がファイルじゃないと使えないので、EXIF の日時は本文投稿時点では読めません。日時は後で読む必要があって、ちょっとややこしい処理になりそうです。
なんとか実装してみて、CVS に放り込んであります。テスト完了したら 0.8.4 としてリリースですね。