發佈日期:
分類:
如何在PHP中‧利用exif_read_data函數存取JPG圖檔EXIF GPS數據
01. 先將JPG檔案放置於一個資料夾內。

02. 針對資料夾內JPG檔案,用exif_read_data函數存取經緯數據,再將資料寫入TXT檔案內。同時,設置連結到Google Map,以便查看JPG檔案拍攝實際位置。
<?php
$output = "gps.txt";
file_put_contents($output, "");
foreach (glob("photos/*.jpg") as $f) {
$exif = exif_read_data($f, 0, true);
foreach ($exif as $key) {}
$n = (float)$key["GPSLatitude"][0] + (float)$key["GPSLatitude"][1]/600000000;
$e = (float)$key["GPSLongitude"][0] + (float)$key["GPSLongitude"][1]/600000000;
$lat = $key["GPSLatitudeRef"];
$long = $key["GPSLongitudeRef"];
$d = $f.','.$n.$lat.','.$e.$long;
echo $d.' <a href="https://www.google.com/maps/place/'.$n.$lat.','.$e.$long.'">Link</a><br />';
file_put_contents($output, $d.PHP_EOL, FILE_APPEND);
}
?>


03. TXT檔案已建立,就可以用file函數,以一行行方式讀取,再放入陣列(ARRAY)裡面。為方便存取,可將陣列設置為全域變數(global variable)。
<?php
global $gps;
$gps = [];
$lines = file("gps.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
array_push($gps,str_getcsv($line));
}
print_r($gps);
?>


04. 最後,如需要在陣列中,用檔案名稱比對有關GPS數據資料,可以用array_search函數。
<?php global $gps; $index = array_search($look_for_filename, array_column($gps, '0')); echo 'Filename: '.$gps[$index][0]; echo 'Latitude: '.$gps[$index][1]; echo 'Longitude: '.$gps[$index][2]; ?>

發佈留言