スキャンした写真の場合、スキャンした日付でEXIFが書き込まれることがあります。
簡単にEXIFの日付を変更する方法を探したのですが、どうやらあまり簡単ではないようです。
EXIFを操作するツールとしてはExifTool by Phil Harveyがあります。 ただし、日付は指定した日時には直接変更できず、現状のEXIFのDateTimeOriginalの日付からの差分を指定する必要があります。
今回の場合、そのままだと使いにくそうなので、プログラム言語経由で扱えるものを探しました。 Rubyではmini_exiftoolというgemがあります。 今回はこれを使ってみました。
基本的にはMini Tutorialにある例のままです。
下の例では入力で渡すファイルをすべて2000年7月11日12時30分45秒の日付にします。
#!/usr/bin/ruby require 'mini_exiftool' require 'time' ARGV.each{|filename| begin photo = MiniExiftool.new filename rescue MiniExiftool::Error => e $stderr.puts e.message exit -1 end # p timeOrig = photo[:DateTimeOriginal] p timeOrig = photo.date_time_original p timeFake = Time.new(2000, 7, 11, 12, 30, 45) p timeDiff = timeFake - timeOrig p photo.date_time_original = timeOrig + timeDiff save_ok = photo.save if save_ok fmt = '%Y-%m-%d %H:%M:%S' puts "#{filename} changed: #{timeOrig.strftime(fmt)} -> #{(timeOrig + timeDiff).strftime(fmt)}" else puts "#{filename} could not be changed" end }