Reading Geotag data from image in php

前端 未结 6 1078
醉酒成梦
醉酒成梦 2020-12-28 09:25

Does anyone know if there is a way to read geotag data from photos in PHP?

Thanks

6条回答
  •  猫巷女王i
    2020-12-28 09:37

    Call this function with filename. I testet it and it works prefectly.

    Call example:

    $fileName='xxxxxx'; //or $fileName='xxxxxxxxx';
    echo $returned_data = triphoto_getGPS($fileName);
    

    Function:

    function triphoto_getGPS($fileName)
    {
        //get the EXIF all metadata from Images
        $exif = exif_read_data($fileName);
        if(isset($exif["GPSLatitudeRef"])) {
            $LatM = 1; $LongM = 1;
            if($exif["GPSLatitudeRef"] == 'S') {
                $LatM = -1;
            }
            if($exif["GPSLongitudeRef"] == 'W') {
                $LongM = -1;
            }
    
            //get the GPS data
            $gps['LatDegree']=$exif["GPSLatitude"][0];
            $gps['LatMinute']=$exif["GPSLatitude"][1];
            $gps['LatgSeconds']=$exif["GPSLatitude"][2];
            $gps['LongDegree']=$exif["GPSLongitude"][0];
            $gps['LongMinute']=$exif["GPSLongitude"][1];
            $gps['LongSeconds']=$exif["GPSLongitude"][2];
    
            //convert strings to numbers
            foreach($gps as $key => $value){
                $pos = strpos($value, '/');
                if($pos !== false){
                    $temp = explode('/',$value);
                    $gps[$key] = $temp[0] / $temp[1];
                }
            }
    
            //calculate the decimal degree
            $result['latitude']  = $LatM * ($gps['LatDegree'] + ($gps['LatMinute'] / 60) + ($gps['LatgSeconds'] / 3600));
            $result['longitude'] = $LongM * ($gps['LongDegree'] + ($gps['LongMinute'] / 60) + ($gps['LongSeconds'] / 3600));
            $result['datetime']  = $exif["DateTime"];
    
            return $result;
        }
    }
    

提交回复
热议问题