« 母と従兄弟と水族館デート | ホーム | 歩きながらビデオ撮影するときの手ブレを極限までなくす方法 »

20 March

PHPを使ってデジカメで撮った写真のExif情報を出力する

昨年にカメラを新調してから、F値がなんだとか露出がどうとか、今まで全く気にしてなかったんだけど「これって写真撮るとき結構重要じゃね?」と、最近気づきました。いやはや気づくまで5年はかかりました。

で、撮った写真からこの情報を出すのに、画像を選んで右クリックしてプロパティとかで見れるんだけど、ものすごく面倒。右図みたいなやつ。何百枚とか撮ってたらこれだけで何時間もかかっちゃうわよ。

で、で、写真整理のときいちいちそんなことしてらんないよねということで、これを一気に出力するものないかなぁーと探していたところあったのでメモ。デジカメで撮ったそのF値とか露出とかひっくるめて“Exif情報”ってゆーみたいね。はい!一つお勉強になりました。

用意する環境とかは以下。

  • PHPの動く環境
  • PEL(Exif情報を操作するライブラリ)

だけ。ほんと簡単。

PHP動く環境ないよ!という人はずっと昔に書いたエントリーをどうぞ。(VISTAじゃなくても大丈夫だと思います)
VISTAにXAMPPをインストール
http://mishuku.net/archives/2008/03/vistaxampp.php

順を追って説明す。

1.PELのダウンロード

http://pel.sourceforge.net/

↑から手にいれることができます。これ書いてるときは「pel-0.9.1.tar.zip (612 KiB)」を選択。

2.1を解凍してPHP動くとこに置く

自分の環境のメモになるので、必要に応じて変えてください。

E:\xampp\htdocs\getExif

↓こんな感じ。

3.取得するPHPソースを置く

適当に書いたのでいかようにも変えてくださいな。

<?php
require_once('pel-0.9.1/PelJpeg.php');

$dir_path = './';
$filename = array();

$dir = dir($dir_path);
while($file = $dir->read()) {
 if(!ereg('(^\.$)|(^\.\.$)', $file)) {
  $filename[] = $file;

  $jpeg = new PelJpeg($file);
  $app1 = $jpeg->getExif();

  if ($app1) {
   $tiff = $app1->getTiff();
   $ifd0 = $tiff->getIfd();

   if ($ifd0) {
    $exif = $ifd0->getSubIfd(PelIfd::EXIF);
    $data['fnumber']            =$exif->getEntry(PelTag::FNUMBER)->getValue(); // 絞り値
    $data['exposure_time']      =$exif->getEntry(PelTag::EXPOSURE_TIME)->getValue(); // 露出時間
    $data['iso_speed_ratings']  =$exif->getEntry(PelTag::ISO_SPEED_RATINGS)->getValue(); // ISO速度
    $data['focal_length']       =$exif->getEntry(PelTag::FOCAL_LENGTH)->getValue(); // 焦点距離
    $data['date_time_original'] =$exif->getEntry(PelTag::DATE_TIME_ORIGINAL)->getText(); // 撮影日時
    $data['model']              =$ifd0->getEntry(PelTag::MODEL)->getText(); // モデル

    echo "絞り値 f/" . $data['fnumber'][0] / $data['fnumber'][1]. "/";
    echo "露出時間 " . $data['exposure_time'][0] . "/" . $data['exposure_time'][1] . "秒/";
    echo "ISO " . $data['iso_speed_ratings'] . "/";
    echo "焦点距離 " . $data['focal_length'][0] / $data['focal_length'][1] . "mm/";
    echo "撮影日時 " . $data['date_time_original'] . "/";
    echo $data['model'];
    echo "
"; } } } } $dir->close(); ?>

ファイル名を「getExif.php」として2と同じところに設置。
↓こんな感じ

4.Exif情報を取得したい写真を置く

こんな感じ。

5.ブラウザでExif情報をみる

http://localhost/getExif/getExif.php

取得したExif情報
絞り値 f/2.8/露出時間 10/30秒/ISO 1600/焦点距離 55mm/撮影日時 2010:02:18 00:00:01/NIKON D700
絞り値 f/3.8/露出時間 10/80000秒/ISO 320/焦点距離 75mm/撮影日時 2010:02:18 11:13:37/NIKON D700
絞り値 f/2.8/露出時間 10/50000秒/ISO 400/焦点距離 55mm/撮影日時 2010:02:18 11:14:41/NIKON D700

はい完了ー。


なにげに今年から撮った写真にこのExif情報つけてました。
Photographのビューワーを開いて写真にマウスを持っていくと上のほうにでるんです。


« 母と従兄弟と水族館デート | ホーム | 歩きながらビデオ撮影するときの手ブレを極限までなくす方法 »

トラックバック(2)

Canon デジタルカメラ IXY DIGITAL (イクシ) 110 IS シ... 続きを読む

JUGEMテーマ:カメラ Canon デジタルカメラ IXY DIGITAL (イクシ) 110 IS シルバー IXYD110IS(SL)金属であ... 続きを読む