mldiogo87 2 Denunciar post Postado Julho 25, 2017 Bom dia, Estou utilizando uma função para obter os dados de GPS de imagens. Ela funciona, ok. Mas quando uma imagem não tem dados de GPS o PHP retorna o erro Undefined index das variáveis. Tentei colocar if empty para as variáveis mas o erro persiste. Teria como fazer algo para quando não tiver dados de gps retorna "Sem dados de GPS" <?php $exif = exif_read_data($filename); $latitude = gps($exif["GPSLatitude"], $exif['GPSLatitudeRef']); $longitude = gps($exif["GPSLongitude"], $exif['GPSLongitudeRef']); ##### não funciona if ( empty($GPSLatitude) || empty($GPSLatitudeRef) || empty($offset) || empty($GPSLongitude) || empty($GPSLongitudeRef) ) { echo "Arquivo sem coordenada de GPS"; } function gps($coordinate, $hemisphere) { for ($i = 0; $i < 3; $i++) { $part = explode('/', $coordinate[$i]); if (count($part) == 1) { $coordinate[$i] = $part[0]; } else if (count($part) == 2) { $coordinate[$i] = floatval($part[0])/floatval($part[1]); } else { $coordinate[$i] = 0; } } list($degrees, $minutes, $seconds) = $coordinate; $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1; return $sign * ($degrees + $minutes/60 + $seconds/3600); } ?> Obrigado!! Compartilhar este post Link para o post Compartilhar em outros sites
washalbano 54 Denunciar post Postado Julho 25, 2017 Olá! você precisa verificar se os indexes existem, com isset, ex.: isset($exif['GPSLatitude']) Compartilhar este post Link para o post Compartilhar em outros sites
mldiogo87 2 Denunciar post Postado Julho 25, 2017 Usei em todas, agora dentro da função o erro retorna de uma variável que não sei onde verificar Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33 LINE 33 $part = explode('/', $coordinate[$i]); Compartilhar este post Link para o post Compartilhar em outros sites
mldiogo87 2 Denunciar post Postado Julho 26, 2017 Solução se alguém precisar: <?php $filename = "1.jpg"; $exif = exif_read_data($filename); if(isset($exif['GPSLatitude'])){ $lon = getGps($exif["GPSLongitude"], $exif['GPSLongitudeRef']); $lat = getGps($exif["GPSLatitude"], $exif['GPSLatitudeRef']); echo $lon; echo $lat; //run code if long/latitude was found }else{ echo "Arquivo sem dados de GPS"; } function getGps($exifCoord, $hemi) { $degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0; $minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0; $seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0; $flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1; return $flip * ($degrees + $minutes / 60 + $seconds / 3600); } function gps2Num($coordPart) { $parts = explode('/', $coordPart); if (count($parts) <= 0) return 0; if (count($parts) == 1) return $parts[0]; return floatval($parts[0]) / floatval($parts[1]); } ?> Compartilhar este post Link para o post Compartilhar em outros sites