もう手放してしまいましたが、初デジタル一眼レフカメラはD5000でした
ところが突然日付が初期状態にリセットされる不具合が何度か起きたため、Nikonプラザに持ち込んだところ「原因は特定できないが基盤交換」となりました(その後は特に問題も無く動いてくれました)
さて、問題はリセットされた状態で撮りまくった画像データ(.NEF)で、日付が2009/01/01からになってしまっていることです
当初(2010年頃)はexifを書き換えるアプリ(ExifDateChangeUB.appなど)を探していろいろやってみたのですが、View NX2やCapture NX2に表示される「作成日」は変更できたものの「撮影日」はダメでそのままほったらかしにしていました
先日そのことをふと思い出し、exiftoolで何とかならんもんかと試した次第です
まず、問題の.NEFデータからexifリストを書き出します
こんな感じですね
exiftool DSC_xxxx.NEF >out.txt
出力されたout.txtを読んでみると意外なことが解りました
Create Date : 2010:05:02 15:20:21.00
Date/Time Original : 2009:01:01 10:45:21.00
“Date/Time Original”=「撮影日」として表示されているもので、つまりリセットされていることが解ります
ところが”Create Date”にはリセット後もD5000内部には正しい時刻情報が生きていたらしく、それが記録されていました!!!\(^o^)/
この辺りのシステム構成は1ユーザーには知る由もありませんが、どうやら内部の時間管理が複数系統に分かれているっぽいですね
勝手にリセットが起こった場合は片方がずれるものの、マニュアルで再設定した時はきちんと同期するようです
それはさておき
正しい時刻が存在しているので修正は思ったより簡単にできそうです
当初、ずれた時刻に対するオフセット時刻を推定して、その分を加算する計算式と文字列操作が必要と考えていましたから
なので手順は次のようになります
1.正しい撮影時刻の取得
exiftool -CreateDate DSC_xxxx.NEF | cut -c 35-
パイプ処理の後段は、不要な文字列を削除して時刻情報だけにするためのものです
2.正しい撮影時刻の書き込み
exiftool -DateTimeOriginal="1で取得した正しい時刻情報" DSC_xxxx.NEF
ただしこの方法だと自動的にバックアップファイルも作成されるので、面倒な場合は
exiftool -overwrite_original -DateTimeOriginal="1で取得した正しい時刻情報" DSC_xxxx.NEF
日付リセット後のファイルがそれなりにあったので、フォルダ内にリセットされたファイルを集めてスクリプトを組みました
#!/bin/bash cd (フォルダ) for file in *.NEF do orgdate=`exiftool -CreateDate ${file} | cut -c 35-` exiftool -overwrite_original -DateTimeOriginal="${orgdate}" ${file} done
簡単でいいですね(o^-^o)
DLのたびに通知が出てすごく邪魔だったんで助かりました。