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でセクション名を確認してください。

2007.08.22 by _simo
Categories: php | Tags: , | Leave a comment

Leave a Reply

Required fields are marked *

*