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

関連する記事 - Related Post

DSF01847_400

ステンドグラス職人になる方法

はじめに 「夢を持ってはだめ」 私が初めてステンドグラスを作ったのは、東京の都心にある、とある個人の方の工房でした。その頃、色々あって急にステンドに強い興味を持ち、当時荻窪に住んでいた私はネットで近くのステンド...…
続きを読む
DSH01950_400

【ステンドグラス探訪76】青淵文庫

青淵文庫 晩香廬と同じ敷地内、すぐ隣あるのがこの青淵文庫(せいえんぶんこ)だ。青淵とは渋沢栄一の雅号からきており、文庫は書庫を意味する。晩香廬もそうだが、ネーミングセンスが秀逸だ。 ちなみに、晩...…
続きを読む
dsg06526_400

ケイムで組むランプシェード2【その4】【完成】

全面ハンダ - The entire surface of the solder 組みと表の接点のみのハンダが終わった段階です。 カタチとしてはもう出来ているのですが、ここから歪みの...…
続きを読む
tannus-01

パンクしないタイヤ、TANNUS(タンナス)が凄い件

個人的自転車事情 - パンクさえなければ・・ 基本的に、通勤も含めて都内の移動はほぼロードバイクです。 単に自転車が好きってのもありますが、都内、特に都心だと、自転車の方が電車より早いですし、目的地の目前まで行...…
続きを読む
bm201604

BABYMETALという奇跡

    馴れ初め AndroidのCMに出てたのをテレビで見たのが最初の出会い。それは間違いない。はっきりと覚えている。時期ははっきりしないけど、多分1年か1年半くらい前。足を大きく上げるキャッチーなダ...…
続きを読む

 Comment

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