スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Posted on --/--/-- --. --:-- [edit]

category: スポンサー広告

Comment: --

--

写真のexif撮影時刻とファイルタイムスタンプを一括置換

海外旅行に行ったときにカメラのタイムゾーンを変更し忘れてしまいました。
exif情報をコマンドラインから変更できる、 exiftool という良さ気なツールを
Twitter で教えていただいたので、紹介します。

ついでに jhead と python スクリプトを用いてタイムスタンプも変更してみました。
こちらも備忘録として書いておきます。


EXIF の撮影時刻の変更


exiftool は こちらのサイトからインストールできます。

今回は Mac版をインストール。

このツールは JPEG だけでなく RAW ファイルの exif情報も取得・書き換えができます。すごい!

exiftool hoge.JPG でexifが取得可能。 -lang jaオプションで日本語表示できます。
ファイルの指定は ワイルドカード * を用いて複数指定も可能です。
本記事では hoge.JPG としますが、すでに述べたように RAWファイルも扱えるので、ニコンなら *.NEFのようにしても可能。


さて本題の、撮影日時の変更です。今回はラスベガス、日本との時差は -17時間。

exiftool -alldates-=17:0:0 hoge.JPG

で変更できます。時差プラスの場合は、 -= の部分を += に。
17:0:0はそれぞれ時間、分、秒なのですが、時間だけの場合は-alldates-=17だけでもできるようです。
しかし、日付をまたぐ場合はこれでは何故かうまく行かなかったので、上記のように指定しました。

また、exiftool はオリジナルファイルを hoge.JPG_original として残します。
バックアップを残さず上書きする場合は、 -overwrite_originalオプションを使用。

よって最終的には

exiftool -alldates-=17:0:0 -overwrite_original hoge.JPG

でできました。

exiftoolは他にもたくさんの使い方があるようなので、ぜひ調べてみてください。


ファイルタイムスタンプの変更


さて、ここまでで EXIF 情報を書き換えられましたが、ファイルのタイムスタンプが現在時刻になってしまいます。この修正を試みます。

JPEGだけの場合は jhead というツールがあるようです。 brew があれば、brew install jhead でインストールできました。

タイムスタンプをEXIFの撮影日時に合わせるにはjhead -ft hoge.JPGを叩きます。
こちらもワイルドカードでの指定が可能。

と、ここまでやったときに、jhead は RAWファイルに対応していないことに気づきました。

ということで、 Python で無理やり変更。
以下の様なスクリプトを実行し、無事に変更ができました。

#coding: utf-8
import os, subprocess, time, re, glob

# exiftool を使って撮影日時を取得
def get_time(file_name):
cmd = "exiftool -SubSecCreateDate " + file_name
out = subprocess.check_output(cmd.split(" "))
date_str = re.match(".*: (.*)", out).groups()[0]
return re.sub(" |\.", ":", date_str).split(":")

nefs = glob.glob("*.NEF")

for nef in nefs:
exif_time = get_time(nef)
conv_time = tuple([int(v) for v in exif_time[0:6]] + [0,0,-1])
mtime = time.mktime(conv_time)
os.utime(nef, (mtime, mtime))



JPEGはすでに jhead によって置換済みのため、上記スクリプトでは RAWの NEFファイルのみを対象としました。
exiftool の pythonラッパーもありそうだけど、面倒なので正規表現で無理やり。

順序が逆でしたが、JPEG も最初から jhead 使わずともスクリプトで良かったですね。

もしかしたらこの作業も exiftool でできたりするのかも? (調べてない)
IT関連の関連記事

Posted on 2015/02/22 Sun. 20:48 [edit]

category: IT関連

tag: 写真  python 

22

コメント

Comment
list

コメントの投稿

Secret

Comment
form

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。