Verfügt eine Bilddatei exif-Daten inkl. GPS bzw. GEO-Tags, so können wir diese parsen und auslesen. Wer sich nur für die Koordinaten interessiert, kann meine Funktion direkt übernehmen. Als Parameter ist lediglich der Pfad zur lokal-gespeicherten Datei erforderlich. Dadurch kann sie auch für Uploads von Bildern angewendet werden. Um die exif/GEO-Tags für anderswo gehostete Dateien, die wir über den absoluten Pfad http://… ansprechen, anzuwenden, müsste die kommentierte file_exist() Überprüfung abgestellt werden.
Hier kommt die Funktion:
function extract_exif_geotags_coordinates($local_filename)
{
if(file_exists($local_filename))//check this only with local files
{
$exif=@exif_read_data($local_filename,0,true);
if(!$exif)
return 0;//error: unupported/no exif info found...
if(@$exif['GPS']['GPSLongitude'][0])//check only one - should be enough
{
$lon=intval(($exif['GPS']['GPSLongitude'][0]+$exif['GPS']['GPSLongitude'][1]+$exif['GPS']['GPSLongitude'][2])/60);
$lonref=$exif['GPS']['GPSLongitudeRef'];
if($lonref=='W')
$lon=-$lon;
$lat=intval(($exif['GPS']['GPSLatitude'][0]+$exif['GPS']['GPSLatitude'][1]+$exif['GPS']['GPSLatitude'][2])/60);
$latref=$exif['GPS']['GPSLatitudeRef'];
if($latref=='S')
$lat=-$lat;
return $lat.','.$lon;//return coordinates
}
}
else
{
return 0;//error: file does not exist
}
}