画像からExif情報を読み取る(PHP版)

画像にマウスオーバーでExif情報が表示されます。(PCで閲覧した際のみ)
現在はスマホで閲覧した際は画像の下にExif情報を表示するよう変更しました。
前回JSでExif情報を読み取る記事を書きました。今回はPHP版。
PHPでは「exif_read_data」というExif情報を取得する関数がデフォルトで用意されています。
が、今回は「pel」というライブラリを使用しました。
exif_read_dataはExif情報の読み込みだけですがpelは情報の書き込みもできます。
このブログでは書き込みは使用していませんがpelを使用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
require_once('PelJpeg.php'); $jpeg = new PelJpeg($file); $get_exif = $jpeg -> getExif(); if ($get_exif) { $tiff = $get_exif -> getTiff(); $get_ifd = $tiff -> getIfd(); if ($get_ifd){ $exif = $get_ifd -> getSubIfd(PelIfd::EXIF); if($exif -> getEntry(PelTag::DATE_TIME_ORIGINAL)){ //撮影日時 $date_time_original = $exif -> getEntry(PelTag::DATE_TIME_ORIGINAL) -> getText(); //カメラモデル $model = $ifd0 -> getEntry(PelTag::MODEL) -> getText(); //絞り値 $fnumber = $exif -> getEntry(PelTag::FNUMBER) -> getValue(); $fnumber = $fnumber[0] / $fnumber[1]; //露出時間 $exposure_time = $exif -> getEntry(PelTag::EXPOSURE_TIME) -> getValue()[1]; //露出補正 $exposure_bias = $exif -> getEntry(PelTag::EXPOSURE_BIAS_VALUE) -> getValue()[0]; //ISO感度 $iso_speed_ratings = $exif -> getEntry(PelTag::ISO_SPEED_RATINGS) -> getValue(); //焦点距離 $focal_length = $exif -> getEntry(PelTag::FOCAL_LENGTH) -> getValue()[0]; //ホワイトバランス $white_balance = $exif -> getEntry(PelTag::WHITE_BALANCE) -> getValue(); $white_balance = $white_balance == 0 ? 'Auto white balance' : 'Manual white balance'; } } } |
こんな感じ。実際は情報が取得できない場合の処理も書いています。
WordPressで使うためにfunctions.phpにこれを関数として用意して、
エントリー記事内でPHPを使える「Exec-PHP」というプラグインをインストールしておき、エントリー内で関数を使用しています。
あとは画像にマウスオーバーした際にExif情報を表示するようなJSを書けばできあがり!