投稿日検索
2015年10月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー検索

【お知らせ】
●2013年1月以降の投稿をRetinaディスプレイに対応

最新のコメント
  1. はじめまして.現在,こちらの車両群を管理している団体の者です. 2004年時点…

, ,

シェルスクリプトで画像処理(8)exiftool編2

もう手放してしまいましたが、初デジタル一眼レフカメラは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)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)