Image::ExifToolでexif書き換える

use strict;
use warnings;

use Image::ExifTool;
use DateTime::Format::Strptime;
use Path::Class qw/dir/;

my $format = DateTime::Format::Strptime->new( pattern =>  "%Y:%m:%d %T");

my $dir = dir("/path/to/dir");

while (my $file = $dir->next) {

    next if $file->is_dir or $file =~ /\.\.$/;

    my $path = $file->absolute->stringify;

    my $exifTool = Image::ExifTool->new;
    my $info = $exifTool->ImageInfo($path);

    my $time = $format->parse_datetime($info->{DateTimeOriginal})->subtract( hours => 16 );
    $exifTool->SetNewValue( $_ => '16:00', Shift => -1 ) for (qw/DateTimeOriginal ModifyDate CreateDate/);
    $exifTool->SetNewValue(Date => $time->strftime('%Y:%m:%d'), EditOnly => 1);
    $exifTool->SetNewValue(Time => $time->strftime('%T'), EditOnly => 1);
    $exifTool->WriteInfo($path);
}

サンフランシスコで一眼の時間を合わすを忘れてしまってiphotoに取り込んでしまって、SDカードから消してしまって、なんか写真だけexif書き換えてもiphotoの方変わらないし、そっちは諦めてflickrで時間順に並べるためにさくっと書き換えた。

DateとTimeはiPhoto用のexifかもしれない。