2007.08.22
category
comments

PHPでExif情報を取得

思った以上に簡単にカメラ機種や撮影時間などのメタデータを取得できた。flickrを使うと自動的にExif情報をゲットできるみたいだけど、自作でフォトビューワーとか作りたい人(自分)のために。以下のExifAll.phpでExif情報の一覧を取得可能。ちなみにデジカメで撮った画像をフォトショで「Web用に保存」してしまうとExif情報が削除されるので注意が必要。

ExifAll.php

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

PHP:
<?php
    $exif = exif_read_data('img/test.jpg', 'IFD0', 1, true);
   
    echo "Make = ".$exif['IFD0']['Make']."<br />\n";
    echo "Model = ".$exif['IFD0']['Model']."<br />\n";
    echo "ExposureTime = ".$exif['EXIF']['ExposureTime']."<br />\n";
    echo "ApertureFNumber = ".$exif['COMPUTED']['ApertureFNumber']."<br />\n";
    echo "ISOSpeedRatings = ".$exif['EXIF']['ISOSpeedRatings']."<br />\n";
    echo "DateTimeOriginal = ".$exif['EXIF']['DateTimeOriginal']."<br />\n";
    echo "ExposureBiasValue = ".$exif['EXIF']['ExposureBiasValue']."<br />\n";
    echo "ExifImageWidth = ".$exif['EXIF']['ExifImageWidth']."<br />\n";
    echo "ExifImageLength = ".$exif['EXIF']['ExifImageLength']."<br />\n";
    echo "WhiteBalance = ".$exif['EXIF']['WhiteBalance']."<br />\n";
    echo "DigitalZoomRatio = ".$exif['EXIF']['DigitalZoomRatio']."<br />\n";
?>

COMPUTED、THUMBNAILおよびCOMMENTのセクションは常に配列となるため、それに合わせる為にexif_read_data()の第3引数を1にする。これで全てのセクションと値を配列として格納するため、2次元配列のカタチで取得できるようになる。詳しくはこちらを参照。

※セクション名の付け方は各メーカーによって異なるようです。上記のソースはNikonのD80で撮影した画像のExif情報を元にしています。他メーカーの場合は一覧を取得するExifAll.phpでセクション名を確認してください。

Post a comment




Comment

Trackbacks

この記事のコメント・トラックバックRSS