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

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

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

Perlで写真のファイル名を管理しています。 写真のEXIFの撮影日付をタイムスタンプに書換えたい、Perlでのやり方を教えてください。 写真をファイル名変更や画像処理した後タイムスタンプがその作業の時間に書き換えられます。オリジナルの時間を大切にしたいので、ファイルのタイムスタンプにEXIFの撮影時間、ファイル管理のNautilusで見ると、ImageタグのDate Taken:に情報があります。 例えば、Date Takenが 2009:12:15 06:00:00 の場合、Accessed と Modified の所にも同じ時間情報 2009:12:15 06:00 を取り込みたいのです。よろしくお願い致します。

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

  • ベストアンサー
  • 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

  • Exif情報を変更するソフトはありませんか?

    デジカメで写真を撮り、いざ現像しようとしたら日付が正しくなって いない状態で撮影していたことに気づきました。 ファイルスタンプは変更できたのですがExifに記載された日時が おかしいままなので変更できるソフトはありませんか? 写真の形式はX3F、PCのOSはWindows XPです。

  • exif 情報の日付について

    いつもお世話になります。 exif の日付に関する情報ついて質問いたします。 日付に関する情報としてよく見るものに  1.撮影日時  2.変更日時 がありますが、これ以外にただの ” 日時 ” だけの情報が付加されたファイルがあります。このファイルは何らかの操作、変更を加えたファイルと思うのですが、変更日時とは意味が異なるようです。 Windows 10 を使用していますが、エクスプローラで写真フォルダーを開いたとき日付時刻で並び替えを行うと、 ” 日時 ” の情報が付加されたファイルは撮影日時ではなくこの ” 日時 ” の情報で並び替えられるため、撮影日時は古いのに比較的新しいファイルして並び替えられ、分かり難くなる事があります。 ” 日時 ” の情報が付加されるのはどんな条件でしょうか? 写真編集に通常使用するソフトは Corel PaintShop Pro です。 よろしくお願いします。

  • タイムスタンプを一括変換するソフト

    タイムスタンプを指定した時間だっけ修正する(更新日時を1時間30分すすめる とかできる)ソフトを知ってる方がいましたら、お教えください。 旅行に行ったときにデジカメで撮影した写真があるのですが、デジカメの内蔵時計が進んでて、画像ファイルのタイムスタンプが全部一定時間だけずれています。これを全てまとめて修正したいのです。 よろしくお願いしますm(_ _)m

  • 画像fileにExif情報を埋め込む方法は?

    デジカメで撮影した画像には今や,当然のように埋め込まれているExif情報は,大変便利だと思います。 私は,長年フィルムカメラを使っていて,撮影フィルムはフィルムスキャナーで画像File化して管理/加工等しています。 この画像Fileに,レンズ名,絞り,シャッター速度,フィルム名などの撮影データを,Exif情報として埋め込めれば非常にFile管理がしやすくなり,また画像データベースとしても便利だと考えています。 前置きが長くなりました。そこで質問です。 このように,デジカメ撮影でない画像FileにExif情報を付加する方法やソフト(業務用でなく)などはないのでしょうか? できればデータ項目名をカスタマイズ/追加等の編集もできればBESTです。

  • Exif撮影情報作成方法

    掲示板に撮影写真を掲載したいのですが、「Exif撮影情報必須、写真サイズは780ピクセル以上」とあります。写真サイズはわかりますが、前段Exif撮影情報の作成方法、教えていただけませんか。

  • Exif情報内のGPS情報を書き換える方法

    デジカメの写真データー(Exif)に、間違ったGPSデーターを書き込んでしまいました。 このGPSデーターを「修正」、又は「消去」したいのですが、フリーソフトが有りましたら教えてください。 前回、タイムスタンプの修正方法を教えて頂き、大変助かりました。 今回の様な、(Exif)情報に有るGPSデーターの修正ソフトは無いのでしょうか。 枚数が少ないので、ソフトが無ければ、手作業で「消去」を行う方法でも結構です。

  • Exif 情報の編集方法を

    デジカメ写真を人にあげる時に、JPGファイルに付随するExif 情報(撮影日時、カメラ機種など)を個人情報保護目的で消去したいのですが、一番簡単な方法を何方か教えて下さい。

  • ファイルプロパティのタイムスタンプ変更

    Vistaで動作するタイムスタンプ変更出来るソフトを探しています。 ベクターより見つけたフリーソフトの納入助3.05/EzFileAge/Moo0 ファイル時刻変更器など十個程試し テンキー(数字)とTABキーのみで簡単に入力出来る納入助を現在使用しています。 納入助を管理者権限で起動しないと駄目なファイルがあり、管理者権限で起動するとドラッグアンドドロップ出来なくなり不便ですし他に使い勝手の良いのがあれば教えて下さい。 10個程試したわけですが、ファイルAのタイムスタンプをコピーしファイルBにそのままコピペできるようなのはありませんか?

  • FFFTPのタイムスタンプ

    FFFTPでは、ホスト側のタイムスタンプを、更新ボタンを押すと、データの更新があるとリフレッシュすることが可能です。 ところで、一度FFFTPに接続して、そのまま置いておくと、その時点でのホストのタイムスタンプが、以後も引き継がれたままになってしまいます。 ダウンロードする場合のファイルは、それ以降に更新された場合には更新後のものなのですが・・・タイムスタンプは、最初にアクセスしたときのものになっています。 複数の人間で、ホムペやサイト管理をしていると、これではいささか困ってしまいます。 ソフトは立ち上げたままの状態にしておいて、ホストを参照するたびに、きちんとタイムスタンプも変わる(自動的に、リフレッシュする)方法があればご教授ください。

  • 写真EXIF情報の削除方法???

    IPHONE5Sを使用しています。写真を撮影した場合、位置情報は消去(非表示)できる方法は知っていますが、日時の消去(非表示)ができません。IPHONEで撮影した写真のEXIF情報を『LOOOKS』というアプリで消去してみますが、『 i 写真フォルダ』というアプリでEXIF情報を確認すると、日時は消せないまま表示されます。IPHONEで撮影した写真の撮影日時を完璧に消去(非表示)する方法はありますか? ご教示よろしくお願いします。

専門家に質問してみよう