Image

Exifデータの表示方法

自分で撮った写真を載せるときに、写真上にテキストでEXIFデータを載せる方法をご紹介します。


欄外に書くよりすっきりしますし、何よりアクセントになるので好きです。photoshopなどを使って加工すると手間だし間違うこともありますし、結構大変ですよね。とくに写真の数が多いときなんて。。


なお、このサイトはWordPressを使っているのでその作りに沿った説明になりますが、他でも応用できるかと思います。

Pocket

DSC0091s.jpg

SONY DSC-RX1R, 1/1000, f/2.0, ISO50, Photo by eto

Exifデータとは?

上の写真の右下に表示されているような、撮影時にjpeg画像に記録される露出時間(シャッタースピード)、絞り値などの情報の事です。正式にはもう少し広い意味ですが、ここではこれらを指します。Wikipediaを見てみましょう。

Exchangeable image file format(エクスチェンジャブル・イメージ・ファイル・フォーマット)は、富士フイルムが開発し、当時の日本電子工業振興協会 (JEIDA)で規格化された、写真用のメタデータを含む画像ファイルフォーマット。デジタルカメラの画像の保存に使われる。略称はExif(「イグジフ」もしくは「エグジフ」)。

カメラの機種や撮影時の条件情報を画像に埋め込んでいて、ビューワやフォトレタッチソフトなどで応用することができる。Exif2.2ではExif Printという規格を組み込んでおり、撮影時の条件情報を元に自動的に最適化を行って、的確な状態でプリント出力を可能にしている。

対応画像形式はJPEG、TIFF、JPEG XR(HD Photo)。

拡大画像


上の写真の場合だと以下のデータを出力しています。

SONY
メーカー
DSC-RX1R
モデル
1/1000
露出時間(シャッタースピード)
f/2.0
絞り値
ISO50
ISO感度
Photo by eto
これはExif情報ではなく単なる文字列。

これらを、画像に直接書くのではなく画像の上にテキストを重ねて表示するのです。

コード

php(function.php)
//exifデータ取得・表示
function exif_print($exif_data, $photographer){
  $exif = exif_read_data($exif_data);
  echo($exif['Make']." ");                           //メーカー
  echo($exif['Model'].", ");                         //モデル
  echo($exif['ExposureTime'].", ");                  //露出時間(シャッタースピード)
  echo($exif['COMPUTED']['ApertureFNumber'].", ");   //絞り値
  echo("ISO".$exif['ISOSpeedRatings'].", ");         //ISO感度
  $tmp_value = $exif['ExposureBiasValue'];
  $tmp_value = explode("/", $tmp_value) ;            //スラッシュの前のデータを取得
  $tmp_value =(integer)$tmp_value[0];
  $tmp_value =$tmp_value/10;
  if ( $tmp_value  != 0 ) {
    echo($tmp_value."EV, ");                         //露出補正
  }
  echo("Photo by ".$photographer."<br />");          //撮影者
}

function.phpに上記のコードを書きます。

exif_read_dataがexifデータを取得する関数で、引数は$exif_data:画像のフルパスと$photographer:撮影者情報の2つです。


exifデータは様々ありますが、主要なのは以下のようなところでしょうか。上の写真ではメーカー、モデル、露出時間、絞り値、ISO感度、露出補正(0以外の場合)を出力しています。

Exifデータ内容
MakeメーカーSONY
ModelモデルDSC-RX1R
ExposureTime露出時間(シャッタースピード)1/1000
ApertureFNumber絞り値f/2.0
ISOSpeedRatingsISO感度sony
ExposureBiasValue露出補正0/10
WhiteBalanceホワイトバランス0
ExposureProgram撮影モード2

すべての返り値を確認するには以下を実行します。
<?php 
  $exif = exif_read_data('http://eto-noriaki.net/wp-content/themes/eto/images/DSC0020s.jpg');
  foreach ($exif as $key=>$value)
  {
      echo $key."=";
      print_r($value);
      echo "<br>";
  } 
?>


html
<img src="http://eto-noriaki.net/wp-content/themes/eto/images/DSC0091s.jpg" >
<p class="exif" >
  <?php exif_print("http://eto-noriaki.net/wp-content/themes/eto/images/DSC0091m.jpg", "eto"); ?>
</p>


投稿や固定ページのhtmlに上記のコードを書きます。また、プラグインを導入し、投稿や固定ページからphpが実行できるようにしています。

PHP Execution

インストール・有効化するだけで、投稿画面からphpが実行可能です。



css

.exif {
  position: relative; 
  top: -30px; 
  left: 425px;
  font-size: 80%;
  color: #ccc; 
}

後は出力する位置合わせですね。画像の上の右下に表示されるよう、調整します。テキストの色は薄いグレーにしています。

DSC0147s.jpg

SONY DSC-RX1R, 1/80, f/2.0, ISO800, 1EV, Photo by eto

最後に

今回はexif_read_data関数を使っていますが、「PEL」というExif情報を操作するライブラリがあり、それを使っても良いかと思います。試していませんが、PELを使えばExifデータの表示だけでなく、追加・変更も可能なようです。


Pocket

Comment

メールアドレスが公開されることはありません。