2016-05-11 33 views
1

私はphp gdライブラリで画像操作をしていました。ちょうど今、神が登場し、jpeg、tiff画像からexifデータを取り出せると私に教えてくれました。しかし、彼は私にどのように教えてくれませんでした!JPEG EXIFデータからジオロケーション情報を取得する方法は?

私はそれについてサーフィンしようとしたデータの取得に関するいくつかの記事を見つけました。地理位置データを取得しようとするまでは、すべてがここで良かったです。私はそのデータを得るための解決策を見つけることができませんでした。

+1

[exif_read_data](http://php.net/manual/en/function.exif-read-data.php) –

+0

私の神は研究をしていない投稿に不満を持ち、彼は私にdownvoteあなたの質問。賞賛する! – halfer

+0

ハハ... 私は[exif_read_data](http://php.net/manual/en/function.exif-read-data.php)について研究し、私は方向をretriveすることができる午前、サムネイル、そこからカメラパラメータジオロケーションデータについては無力でした。私はexif地理位置検索に関する多くの情報を得ることができなかったので、何の研究もできませんでした。 今、インドとイギリスは共に民主共和国です。望むなら、あなたはダウンボートすることができます。あなたの時間のために再び おかげで... – bantya

答えて

5

私はコメントexif_read_dataに言及しました。今私は私の机の上にいるのでもう少し詳しく説明することができます。私は正確にこれを行うにはしばらく前に機能を作成しました:

// get geo-data from image 
function get_image_location($file) { 
    if (is_file($file)) { 
     $info = exif_read_data($file); 
     if ($info !== false) { 
      $direction = array('N', 'S', 'E', 'W'); 
      if (isset($info['GPSLatitude'], $info['GPSLongitude'], $info['GPSLatitudeRef'], $info['GPSLongitudeRef']) && 
       in_array($info['GPSLatitudeRef'], $direction) && in_array($info['GPSLongitudeRef'], $direction)) { 

       $lat_degrees_a = explode('/',$info['GPSLatitude'][0]); 
       $lat_minutes_a = explode('/',$info['GPSLatitude'][1]); 
       $lat_seconds_a = explode('/',$info['GPSLatitude'][2]); 
       $lng_degrees_a = explode('/',$info['GPSLongitude'][0]); 
       $lng_minutes_a = explode('/',$info['GPSLongitude'][1]); 
       $lng_seconds_a = explode('/',$info['GPSLongitude'][2]); 

       $lat_degrees = $lat_degrees_a[0]/$lat_degrees_a[1]; 
       $lat_minutes = $lat_minutes_a[0]/$lat_minutes_a[1]; 
       $lat_seconds = $lat_seconds_a[0]/$lat_seconds_a[1]; 
       $lng_degrees = $lng_degrees_a[0]/$lng_degrees_a[1]; 
       $lng_minutes = $lng_minutes_a[0]/$lng_minutes_a[1]; 
       $lng_seconds = $lng_seconds_a[0]/$lng_seconds_a[1]; 

       $lat = (float) $lat_degrees + ((($lat_minutes * 60) + ($lat_seconds))/3600); 
       $lng = (float) $lng_degrees + ((($lng_minutes * 60) + ($lng_seconds))/3600); 
       $lat = number_format($lat, 7); 
       $lng = number_format($lng, 7); 

       //If the latitude is South, make it negative. 
       //If the longitude is west, make it negative 
       $lat = $info['GPSLatitudeRef'] == 'S' ? $lat * -1 : $lat; 
       $lng = $info['GPSLongitudeRef'] == 'W' ? $lng * -1 : $lng; 

       return array(
        'lat' => $lat, 
        'lng' => $lng 
       ); 
      } 
     } 
    } 

    return false; 
} 

この機能は、例えば、ファイルのアップロードで動作するように意図されています

if (($geo = get_image_location($_FILES['file']['tmp_name'])) && !empty($geo)) { 
    // upload file 
} else { 
    // file does not appear to contain any location information 
} 

あなたに良いスタートを与える必要があること。

+0

おかげでミスター・マーティンは、あなたのコードは私のために働いていた...それはまさに私が探していたものを提供します。..再びインドから おかげ.. _/_ \\ – bantya

関連する問題