Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!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 33
Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33
Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33
Notice: 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]);
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]);
}
?>
Olá!
você precisa verificar se os indexes existem, com isset, ex.:
isset($exif['GPSLatitude'])