检查图像中是否存在 exif 纬度和经度

checking if exif latitude & longitude exists in image

所以我在使用 read_exif_data 函数,遇到了一个小问题。 如果图像中没有经度和纬度,我必须停止文件上传。

问题是我找不到检查 gps 数组是否在 exif 数据中的方法。

我正在从 $ _ FILES['spotImg']['tmp_name'] 中读取数据,我确实得到了我需要的 exif。

问题仅出现在图像中没有 gps 数据时。

if($_FILES['spotImg']['error'] == 0){

            $file = "image_".uniqid(). $_FILES['spotImg']['name'];
            $img = WideImage::loadFromFile($_FILES['spotImg']['tmp_name']);

            //check if exif data is avalible
            $temp = $_FILES['spotImg']['tmp_name'];
            $exif = read_exif_data($temp, 0, true);

            echo "<pre">;
            print_r($exif);
            echo "</pre>;

}

这就是我的想法,但行不通

if(isset($exif['GPSLatitude'])){
     //run code if long/latitude was found
   }else{
    //give a error message if long/latitude was NOT found
}

这是我要检查是否存在的数组

[GPS] => Array
    (
        [GPSLatitudeRef] => N
        [GPSLatitude] => Array
            (
                [0] => 55/1
                [1] => 41/1
                [2] => 2846/100
            )

        [GPSLongitudeRef] => E
        [GPSLongitude] => Array
            (
                [0] => 12/1
                [1] => 33/1
                [2] => 1568/100
            )

        [GPSAltitudeRef] => 
        [GPSAltitude] => 68780/4027
        [GPSTimeStamp] => Array
            (
                [0] => 12/1
                [1] => 48/1
                [2] => 4621/100
            )

        [GPSSpeedRef] => K
        [GPSSpeed] => 0/1
        [GPSDateStamp] => 2015:09:16
    )

我在读取图像的 ['orientation'] 属性 时遇到了类似的问题;有些没有。

我找到的解决方案是使用 !empty() 进行检查,如下所示:

if(!empty($exif['GPSLatitude'])){
  //run code if long/latitude was found
}else{
  //give an error message if long/latitude was NOT found
}

此检查应该可以正常工作,不会引发任何错误。

read_exif_data() alias – Has been deprecated. Use the exif_read_data() function instead

Read the docs