Exifをいじるプログラムを書いてみることにする

昨日は、息子の卒業式で、妻と2台(PowerShot S3 IS と PowerShot SX130 IS)のデジカメを駆使して写真撮影をしたのだけれど、この写真をiPhotoに取り込んでみたところ、時間軸がズレている。S3の方が1時間くらい進んでいて、SX130の方が2時間30分くらい進んでいる。カメラの時計は修正するだけで良いけれど、問題は撮影してしまった画像だ。
いつからズレているのか、今となってはもうわからないのだけれど、昨日の写真だけでも修正してみることにしよう。

条件としては、複数のファイルがあるので、これをバッチ的に変更できること。折角の機会なので、勉強を兼ねてObjective-CとかPythonとかで書いてみるというのも楽しそうだけれど、まあ、ここは慣れたperlで書いてみることにする。あとで余裕があったら、他の言語で習作としてやってみればいい。

ひとまずMacPortsExif関係を探す。いつも悩むんだけれど、CPANMacPortsと、どっちでパッケージを管理したらよいのかよく分からないんだけど、CPANはuninstallできないから、MacPortsで。

% port search exif
(略)
p5-image-exiftool @8.15 (perl)
    Perl interface to EXIF metadata
(略)
Found 11 ports.
%

exifという「Command line tool to read, write, modify and display EXIF data」というツールもあるようだけれど、ソレだと多分shell scriptを組むハメになりそうなので、当初の予定どおりperlで。ということで、p5-image-exiftool をインストール。perldocを読んでみたら、簡単にできそうだ。

           # shift original date/time back by 1 hour
           $exifTool->SetNewValue(DateTimeOriginal => '1:00', Shift => -1);