30 July 2011

(Perl) jpeg画像のexif回転方向タグを変更する

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");