撮影した写真がたまって、整理に困っていませんか? 私はある程度の、いえ、かなりの枚数がたまったところで一覧表にしています。
一覧表はExcelで作成します。「ファイル名」、「撮影日時」、「写真の内容」、その他現像して誰に渡したか、その枚数なども記録します。写真の内容は自分で入力するよりほかありませんが、ファイル名と撮影日時くらいは自動でどうにかしたいところです。
そこで、簡単なPerlスクリプトで写真の情報を取得する方法をご紹介します。どなたでも試していただけると思います。
まず、Perlを使うための準備が必要です。手順はPerlを使う準備をご覧ください。ここに記載しているように、WindowsにActivePerlをインストールした環境を想定しています。異なる環境でも、スクリプト自体は同じように使えます。
以降、写真の情報を取得するスクリプトについて説明します。
準備
image-ExifToolをインストール
「スタート」-「すべてのプログラム」-「ActivePerl」-「Perl Package Manager」を起動します。
左上の「View all packages」をクリックし、スクロールして「image-ExifTool」を探します。
「Action」-「Install Image-ExifTool…」をクリックします。
すると、「image-ExifTool」のパッケージアイコンに緑のマークがつきます。
「File」-「Run Marked Actions」をクリックします。
インストールの確認メッセージが表示されるので「OK」をクリックします。
インストールが完了すると、パッケージアイコンがグレーからカラーに変わります。
これで準備完了です。
写真1枚の情報をとりあえずすべて取得してみる
まずは、Image-ExifToolでどのような情報を取得できるのか、「photo-1.JPG」という1枚の写真の情報をすべて取得して見てみましょう。
スクリプト
テキストエディタを起動して次のスクリプトをコピー&ペーストし、ファイル名は「sample-1.pl」とし、文字コードは「UTF-8」で保存します。
use strict; use warnings; use Image::ExifTool; my $file = "photo-1.jpg"; my $exiftool = new Image::ExifTool; my $exifinfo = $exiftool->ImageInfo($file); my($key); for $key (sort keys %$exifinfo){ print "$key : $exifinfo->{$key}\n"; }
実行
Cドライブ直下に「photos」というフォルダを作り、その中に「photo-1.JPG」と「sample-1.pl」を入れます。
「スタート」-「すべてのプログラム」-「アクセサリ」-「コマンドプロンプト」でコマンドプロンプトを起動します。
「cd /d C:\photos」と入力してEnterを押します。
※「cd /d xxxx」はxxxxにドライブを変更するコマンドです。
「perl sample-1.pl」と入力してEnterを押します。
「photo-1.JPG」の情報が出力されました。
ここでは、「CreateDate」と「DateTimeOriginal」という2つの出力結果に注目します。
「DateTimeOriginal」はシャッターが押された時間、「CreateDate」は撮影した写真がメモリーに記録された時間です。通常この2つは同じ日時か、数秒の誤差の範囲となります。
フォルダ内の写真のファイル名と撮影日時をすべて取得する
スクリプト
テキストエディタを起動して次のスクリプトをコピー&ペーストし、ファイル名は「sample-2.pl」とし、文字コードは「UTF-8」で保存します。
use strict; use warnings; use Image::ExifTool; my $dir = '.'; opendir(DIR, $dir) or die "$dir: $!"; while (my $img = readdir(DIR)) { next unless ($img =~ /\.(jpg)|(JPG)$/); my $exifinfo = Image::ExifTool->new->ImageInfo($img); close($img); my $date_time_original = $exifinfo->{'DateTimeOriginal'}; open(NEWFILE, ">> ExifInfo.txt") or die "ExifInfo.txt: $!"; print NEWFILE "$img\t$date_time_original\n"; close(NEWFILE); }
実行
Cドライブ直下に作成した「photos」というフォルダの中に複数の写真と「sample-2.pl」を入れ、「sample-2.pl」をダブルクリックします。
「ExifInfo.txt」というファイルが生成されます。
「ExifInfo.txt」を開くと、ファイル名と撮影日時が出力されていることが確認できます。
Excelで表のひな型を作成します。
「ExifInfo.txt」の内容を作成したExcelにコピー&ペーストすれば完了です。
あとは、写真の内容を記述したり、その他必要な情報を右コラムに追記していくだけです。
まとめ
ちょっとしたことかもしれませんが、日常の面倒くさいことを一つ解消できていると感じています。
このような基礎的な知識でできる範囲にはなりますが、今後もできるだけ紹介していきたいと思います。
コメント