PHPでExif情報を取得
思った以上に簡単にカメラ機種や撮影時間などのメタデータを取得できた。flickrを使うと自動的にExif情報をゲットできるみたいだけど、自作でフォトビューワーとか作りたい人(自分)のために。以下のExifAll.phpでExif情報の一覧を取得可能。ちなみにデジカメで撮った画像をフォトショで「Web用に保存」してしまうとExif情報が削除されるので注意が必要。
ExifAll.php
<?php
$exif = exif_read_data('img/test.jpg', 0, true);
foreach ($exif as $key => $section)
{
foreach ($section as $name => $val)
{
echo "$key.$name: $val<br />\n";
}
}
?>
続いて欲しい情報だけを取り出すソース。
ExifSelect.php
$exif = exif_read_data('img/test.jpg', 'IFD0', 1, true);
echo "Make = ".$exif['IFD0']['Make']."\n";
echo "Model = ".$exif['IFD0']['Model']."\n";
echo "ExposureTime = ".$exif['EXIF']['ExposureTime']."\n";
echo "ApertureFNumber = ".$exif['COMPUTED']['ApertureFNumber']."\n";
echo "ISOSpeedRatings = ".$exif['EXIF']['ISOSpeedRatings']."\n";
echo "DateTimeOriginal = ".$exif['EXIF']['DateTimeOriginal']."\n";
echo "ExposureBiasValue = ".$exif['EXIF']['ExposureBiasValue']."\n";
echo "ExifImageWidth = ".$exif['EXIF']['ExifImageWidth']."\n";
echo "ExifImageLength = ".$exif['EXIF']['ExifImageLength']."\n";
echo "WhiteBalance = ".$exif['EXIF']['WhiteBalance']."\n";
echo "DigitalZoomRatio = ".$exif['EXIF']['DigitalZoomRatio']."\n";
COMPUTED、THUMBNAILおよびCOMMENTのセクションは常に配列となるため、それに合わせる為にexif_read_data()の第3引数を1にする。これで全てのセクションと値を配列として格納するため、2次元配列のカタチで取得できるようになる。詳しくはこちらを参照。
※セクション名の付け方は各メーカーによって異なるようです。上記のソースはNikonのD80で撮影した画像のExif情報を元にしています。他メーカーの場合は一覧を取得するExifAll.phpでセクション名を確認してください。
