デジカメの撮影日時を一括変更する方法のメモ
2週間ほど欧州周遊の旅に出ていて、そのせいでブログの更新がご無沙汰になっていました。一ヶ月以上放置すると広告記事が投稿される仕様のようですね。
で、デジカメを使ってたくさんの写真を撮ってきたわけですが、時計を合わせるのを忘れたせいで、全部日本時間のまま写真を撮ってしまいました。そのデータを全部現地時間に変換するのが意外と面倒だったので、その方法をメモっておく。
注意
僕が写真を撮るのに使ったデジカメは、CanonのIXY DIGITAL 70で、写真の閲覧に使っているのはGoogleのPicasa。このメモに書く方法は、IXY DIGITAL 70で間違った日時で撮った写真を訂正して、Picasaで意図通りに表示することができたというだけのもの。なので、他のデジカメや閲覧ソフトを使ったらうまくいかないのかもしれないので注意。とはいえ、IXY DIGITAL 70とPicasaがいい感じに協調してくれているのは、間にDCFっていうファイルシステム規格を挟んでいるからっぽいので、ひょっとしたら他のカメラとか閲覧ソフトとかでもうまくいくのかもね。未検証だけど。
JPEGファイルだけの場合
間違った日時で撮ったデータがJPEG形式の写真ファイルだけのときは、訂正するのは至って簡単。EXIF情報の日時やファイル更新日時を一括で変更してくれるツールが出回っているので、それを使ってやればOK。
僕はF6 Exifというツールを使った。撮影日時一括更新という機能がついているので、それを使ってやればEXIF情報に現れる日時と、ファイルシステムの更新日時を変更してくれる。
動画ファイル等が含まれている場合
JPEGファイルだけでなく、AVI等の動画ファイルが含まれているとちょっと面倒くさい。
IXY DIGITALで撮影した動画ファイルは拡張子AVIで保存されていて、Picasaでプロパティを見てみると撮影日時やシャッタースピードなどのEXIFっぽい情報を見ることができる。とはいえ、AVIファイルの方にEXIF情報が保存されているわけではない。
動画ファイルのEXIF情報は、同じファイル名で拡張子が.THMになっているファイルに含まれている。これはどうやらサムネイルファイルのようで、動画のサムネイル画像とEXIF情報が収められたJPEGファイルになっているらしい。THMファイルの実体はJPEGファイルなので、拡張子を.jpg等に変えてやれば普通に表示することができる。
このTHMファイルはDCFの規格に含められているようで、だからPicasaで動画ファイルのプロパティを見てみるとTHMファイルを読みに行く模様。したがって、動画ファイルの撮影日時情報を書き換えたかったら、THMファイルのEXIF情報を書き換えてしまえばいい。THMファイルの拡張子を一時的に.jpgに変更して、F6 Exifの撮影日時一括更新を走らせれば、問題なく動画の撮影日時情報も書き換えてくれる。めでたしめでたし。
ついでに、AVIファイルのファイルシステム上の更新日時も変更しておいたほうが気持ちが良いので、それも変更してみた。おそらく、ファイルシステム上の更新日時を一括更新してくれるツールもあるとは思うが、僕はperlを使った。
バッチファイル
- THMファイルの拡張子を.jpgに変更
- F6 Exifを走らせて写真とサムネイルのEXIF情報を更新
- THMファイルの拡張子を元に戻す
- AVIファイルの更新日時を変更
↑の一連の作業をとりあえずバッチファイルにまとめておいたのが↓。
@echo off perl -e "rename $_, $_ . '.jpg' foreach (glob '*.THM');" echo '*.THM'を'*.THM.jpg'にリネームしました。 echo F6 Exif等のツールを使ってJPEGファイルのExif情報と更新日時を変更してください。 pause perl -e "rename $_, substr $_, 0, -4 foreach (glob '*.THM.jpg');" echo '*.THM.jpg'を'*.THM'にリネームしました。 echo 動画ファイルの更新日時を進めます。 echo 何時間進めますか? set /P HOUR= perl -e "my $s = %HOUR% * 3600; foreach my $file (glob '*.AVI') { my $stat = stat $file; utime $stat[8], $stat[9] + $s, $file; }" echo 終了 pause
無意味にperlを使ったりしていてあまり美しくはないが、実用上は問題なし。今後はこれを使ってしまおうと思う。
おまけ
EXIFに保存される日時にはタイムゾーンの情報が含まれていないということに気づいた。何でだろうか。うっかり忘れたとしか思えない。
関連記事
トラックバック URL
- http://liosk.blog103.fc2.com/tb.php/117-6e898a6e