Manejo de datos GPS en exif de las imagenes, si se sube una imagen georeferenciada a un formulario que tenga un campo de mapa, este automagicamente se ubicará sobre las coordenadas de la imagen, tambien se cambio el layer por defecto de openstreetmap al del hot

This commit is contained in:
fredyrivera 2015-06-03 23:27:11 -05:00
parent 7643753adf
commit 485e74ac33
3 changed files with 4157 additions and 4036 deletions

8141
milfs/funciones/funciones.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@ if ( !isset ( $_SESSION['id'] ) ) {
//header("Location: ../../../includes/error.php");
// echo "hola mundo2";
}
$imagen= $_REQUEST[id_imagen];
if($_REQUEST[u] == "escritorio") {$respuesta = "escritorio/";}
// Script Que copia el archivo temporal subido al servidor en un directorio.
@ -28,7 +29,9 @@ if (($tipo == 'image/jpeg' or $tipo =='image/png') AND $size <= $upload_size )
// (3) Por ultimo se intenta copiar el archivo al servidor.
$name = MD5(time())."$ext";
$nombre= "$_SESSION[path_images_secure]/full/".$name;
$imagenX = $_FILES[fileUpload][tmp_name];
$coordenadas = leer_exif($imagenX);
if($coordenadas !='') { $alerta = "alert('Se han detectado coordenadas en los metadatos de la imagen y se ubicará el mapa en ese lugar.');";}
//if (!copy($_FILES['fileUpload']['tmp_name'],"$nombre"))
if (!move_uploaded_file($_FILES['fileUpload']['tmp_name'],$nombre))
//move_uploaded_file($tmp_name, "$uploads_dir/$name");
@ -43,7 +46,8 @@ else{
echo generar_miniatura($name,"150");
echo generar_miniatura($name,"300");
echo generar_miniatura($name,"600");
echo "<script>parent.resultadoUpload(0, '$name','$_SESSION[url]/','$imagen');</script> ";
///$name= "$name?$coordenadas"
echo " <script>parent.resultadoUpload(0, '$name','$_SESSION[url]/','$imagen','$coordenadas'); $alerta </script> ";
}
}
else echo "<script>parent.resultadoUpload(2,'','$_SESSION[url]/','$imagen');</script> ";
@ -62,5 +66,43 @@ $archivo = "$_SESSION[path_images_secure]/full/".$file; // Ponemos el . antes de
$newheight = $alto; $newwidth = round($newheight / $ratio); // Sacamos la extensión del archivo $ext = explode(".", $file); $ext = strtolower($ext[count($ext) - 1]); if ($ext == "jpeg") $ext = "jpg"; // Dependiendo de la extensión llamamos a distintas funciones switch ($ext) { case "jpg": $img = imagecreatefromjpeg($archivo); break; case "png": $img = imagecreatefrompng($archivo); break; case "gif": $img = imagecreatefromgif($archivo); break; } // Creamos la miniatura $thumb = imagecreatetruecolor($newwidth, $newheight); // La redimensionamos imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $file_info[0], $file_info[1]); // La mostramos como jpg //header("Content-type: image/jpeg"); imagejpeg($thumb,"$_SESSION[path_images_secure]/".$alto."/$file", 80);
//imagejpeg($thumb,null, 80);
}
// Convertir un string "1/123" a su representación float
function exif_float($value) {
$pos = strpos($value, '/');
if ($pos === false) return (float) $value;
$a = (float) substr($value, 0, $pos);
$b = (float) substr($value, $pos+1);
return ($b == 0) ? ($a) : ($a / $b);
}
function leer_exif($file){
//$file = "/var/www/html/milfs/images/gps.jpg";
$exif = exif_read_data( $file );
if ( !empty($exif['GPSLongitude']) && !empty($exif['GPSLatitude']) ) {
$d = (float) $exif['GPSLongitude'][0];
$m = exif_float($exif['GPSLongitude'][1] );
$s = exif_float( $exif['GPSLongitude'][2] );
$gps_longitude = (float) $d + $m/60 + $s/3600;
if ( $exif['GPSLongitudeRef'] == 'W')
$gps_longitude = -$gps_longitude;
$d = $exif['GPSLatitude'][0];
$m = exif_float($exif['GPSLatitude'][1] );
$s = exif_float( $exif['GPSLatitude'][2] );
$gps_latitude = (float) $d + $m/60 + $s/3600;
if ( $exif['GPSLatitudeRef'] == 'S')
$gps_latitude = -$gps_latitude;
if($gps_latitude !='') {
$resultado = "$_SESSION[url]/mapa.php?lon=$gps_latitude&lat=$gps_longitude&zoom=18";
}else{$resultado ="";}
//$resultado = "$gps_longitude $gps_latitude";
return $resultado;
}
}
?>

View File

@ -96,7 +96,7 @@ function finMovimiento(event)
//// fin drag div
function resultadoUpload(estado, file,respuesta,id) {
function resultadoUpload(estado, file,respuesta,id,coordenadas) {
var link = '<br />';
if (estado == 0)
var mensaje = '<img class=" img-thumbnail responsive" src="'+respuesta+'images/secure/?file=600/' + file + '" >' + link;
@ -111,6 +111,10 @@ if (estado == 3)
var mensaje = 'Error ! - No se pudo copiar Archivo. Posible problema de permisos en server' + link;
document.getElementById('formUpload').innerHTML=mensaje;
document.getElementById(id).value=file;
if (coordenadas != '') {
document.getElementById('mapita').contentWindow.document.location.href=coordenadas;
}
}
function resultadoUploadArchivo(estado,file,div) {