jpeg画像のexif回転方向タグを、任意の値に変更する。
値の書き換えであっても ”SetNewValue” メソッドを使うようだ。
#!/usr/bin/perl
use warnings;
use strict;
use Image::ExifTool;
# ファイル名のユーザ入力
print("Exif rotate flag change\ntarget file : ");
my $filename = <>;
chomp($filename);
unless(-f $filename || -w $filename){ die("file not exist or readonly\n"); }
my $exifTool = Image::ExifTool->new();
$exifTool->ImageInfo($filename);
# 回転情報を得る(1:0 deg, 3:180 deg, 6:90 deg(CW), 8:270 deg (CW))
my $exifRotate = $exifTool->GetValue('Orientation', 'Raw');
unless(defined($exifRotate)){ die("no exif data in jpeg\n"); }
print("rotation flag = ". $exifRotate . "\n");
# 書き込む回転方向タグのユーザ入力
print("Rotation flag change (1:0deg, 3:180deg, 6:90deg CW, 8:270deg CCW) : ");
$exifRotate = <>;
chomp($exifRotate);
unless($exifRotate == '1' || $exifRotate == '3' || $exifRotate == '6' || $exifRotate == '8'){
die("rotation flag is out of range\n");
}
# 回転方向タグを書き込む
$exifTool->SetNewValue('Orientation'=>$exifRotate, Type => 'ValueConv');
if($exifTool->WriteInfo($filename) == 0){ die("file write error\n"); }
print("done\n");