- ベストアンサー
PerlでEXIF日付をタイムスタンプに変更する方法
- Perlを使用して写真のファイル名を管理していますが、EXIFの撮影日付をタイムスタンプに変更したいです。
- ファイル名変更や画像処理を行った後、オリジナルの時間情報を保持するために、EXIFの撮影時間をファイルのタイムスタンプに反映させたいです。
- Nautilusでのファイル管理時、ImageタグのDate Takenに情報があり、それを他のタイムスタンプにも反映させたいです。Perlを使用したやり方を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず1つ変更する分です。 沢山変更するのは、foreachなりなんなりで回せばよいでしょう。 use strict; use warnings; use 5.010; use Time::Local; # 以下はデフォでは入ってないので、CPANなりppmなりで入れる。 use Image::ExifTool; #------------------------------------------------------------ my $file = "./hogehoge.jpg"; #------------------------------------------------------------ my $exifTool = new Image::ExifTool; # $exifInfo はExif情報ハッシュへのリファレンス my $exifInfo = $exifTool->ImageInfo($file); my $exifTime = $exifInfo->{'DateTimeOriginal'}; print $exifTime; #------------------------------------------------------------ # 2000:10:21 10:30:25 みたいな形になるようなので分解 my ($year, $mon, $day, $hour, $min, $sec) = $exifTime =~ /(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)/; my $exifTimeEpoch = timelocal($sec,$min,$hour,$day,$mon-1,$year); #------------------------------------------------------------ # ModifyとAccessを修正 utime $exifTimeEpoch , $exifTimeEpoch , $file; # とはいえ、Accessってアクセスしちゃうから直ぐにまた変更になるんじゃ・・・ #------------------------------------------------------------
お礼
kokucho81さん、ほんとうに有難うございました。 アドバイスと指摘の通り、下記に2箇所を補足させていただきます。 1. ExifToolは下記のリンクでダウンロードし、インストールしました。 http://www.sno.phy.queensu.ca/~phil/exiftool/index.html OSはFedora 14だったので、こちらのパッケージを使いました。 http://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-8.56.tar.gz 2. ModifyとAccessタイムについて 確かにAccessは意味がありませんでした。(笑)コンソールでModifyタイムがExif時間でよかったです。 このように修正して使わせていただきました。 # ModifyとAccessを修正 utime time() , $exifTimeEpoch , $file; 有難うございました。