高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

PerlでExif設定

アドエスで撮影した写真にはExif情報がつきません。うちではExif情報を使って写真を整理しているので、何も入っていないのは都合が悪い。
ならば入れてしまおうということで、PerlExif情報を編集するモジュール、Image::ExifToolを使用します。

use strict;
use Image::ExifTool qw/ImageInfo/;
use POSIX;
use Cwd;

my $dir = Cwd::getcwd();
while(<*.jpg>)
{
  my $n = $_;
  print "> $n\n";
  my $exifTool = new Image::ExifTool;
  $exifTool->ExtractInfo("$dir/$n") or die $!;
  my $newVal = strftime "%Y:%m:%d %H:%M:%S", localtime((stat($_))[9]);
  $exifTool->SetNewValue("DateTimeOriginal", $newVal);
  $exifTool->SetNewValue("DateTime", $newVal);
  $exifTool->SetNewValue("ImageDescription", "It takes a picture with Advanced/W-ZERO3[es].");
  $exifTool->SetNewValue("Make", "WILLCOM x SHARP");
  $exifTool->SetNewValue("Model", "Advanced/W-ZERO3[es]");
  $exifTool->SetNewValue("Software", "Advanced/W-ZERO3[es] with Windows Mobile 6");
  $exifTool->WriteInfo("$dir/$n", "$dir/_ $n") or die $!;
  print "> complete $n\n";
}

ファイルのあるフォルダの*.jpgファイルにExif情報を書き込み、ファイル名の先頭に_をつけて保存します。どうも上書きはできないようですので、そのまま上書きしてしまいたい場合はファイル保存後にリネームしてください。

*1:ただし、この記事で使用してるモジュールのバージョンは古いようです、このままではWriteInfoが動きません