「 EXIF 」 一覧
-
CakePHP3 ImageMagickでExifのOrientation情報あったら写真回転する
2017/12/01 -コントローラー(Controller)
EXIF, ImageMagick, Orientation, 写真回転◯ CakePHP3 ImageMagickでExifのOrientation情報あったら写真回転する方法(JPEGのみ)。 [crayon-5fffec54915dd310996 …
-
CakePHP3 写真から位置情報(GPS)を取得するサンプルコード
2017/12/01 -コントローラー(Controller)
サンプルコード, EXIF, latitude, longitude, 位置情報, GPS, exif_read_data, 緯度, 経度, 高度◯ CakePHP3 写真から位置情報(GPS)を取得するサンプルコードです。
1234567891011121314151617181920212223242526272829303132333435363738394041424344class UsersController extends AppController{public function index(){// Exif取得(EXIFヘッダを読み込む)$exif_data = @exif_read_data('画像パス');// GPS(緯度・経度)取得if (isset($exif_data) && !empty($exif_data['GPSLatitudeRef']) && !empty($exif_data['GPSLatitude']) && !empty($exif_data['GPSLongitudeRef']) && !empty($exif_data['GPSLongitude'])) {$gps_lat = $this->exif_get_10_from_60($exif_data['GPSLatitudeRef'], $exif_data['GPSLatitude']);$gps_long = $this->exif_get_10_from_60($exif_data['GPSLongitudeRef'], $exif_data['GPSLongitude']);}// GPS(高度)取得if (isset($exif_data['GPSAltitude']) && !empty($exif_data['GPSAltitude'])) {$gps_altitude = $this->exif_convert_float($exif_data['GPSAltitude']);if (isset($exif_data['GPSAltitudeRef']) && ($exif_data['GPSAltitudeRef'] == '1') && !empty($gps_altitude)) {// 海抜0m未満だったら$gps_altitude = ($gps_altitude * -1);}}var_dump($gps_lat); // 緯度:35.728466666667var_dump($gps_long); // 経度:139.70668055556var_dump($gps_altitude); // 高度:42.364415862808}// Exifの位置情報を60進数から10進数に変換private function exif_get_10_from_60($ref, $gps){// 60進数から10進数に変換$data = $this->exif_convert_float($gps[0]) + ($this->exif_convert_float($gps[1]) / 60) + ($this->exif_convert_float($gps[2]) / 3600);//南緯または西経の場合はマイナスにして返却return ($ref=='S' || $ref=='W') ? ($data * -1) : $data;}// 「x/y」という文字列を受け取り、「x÷y」の結果を返すprivate function exif_convert_float($str){$val = explode('/', $str);return isset($val[1]) ? ($val[0] / $val[1]) : $str;}}