• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PerlでEXIF日付をタイムスタンプに変更方法)

PerlでEXIF日付をタイムスタンプに変更する方法

このQ&Aのポイント
  • Perlを使用して写真のファイル名を管理していますが、EXIFの撮影日付をタイムスタンプに変更したいです。
  • ファイル名変更や画像処理を行った後、オリジナルの時間情報を保持するために、EXIFの撮影時間をファイルのタイムスタンプに反映させたいです。
  • Nautilusでのファイル管理時、ImageタグのDate Takenに情報があり、それを他のタイムスタンプにも反映させたいです。Perlを使用したやり方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.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ってアクセスしちゃうから直ぐにまた変更になるんじゃ・・・ #------------------------------------------------------------

aa_aki
質問者

お礼

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; 有難うございました。

関連するQ&A