Cargando



Cómo obtener la información de una foto con Ruby

En este tutorial verás cómo sacar los metadatos (Hora que se realizó, localización...) de una fotografía usando Ruby y la librería exifr.


jun 22 2016 12:36
Intermedio
jun 22 2016 14:24

Hoy en día estamos acostumbrados a subir nuestras fotos a las redes sociales o a la “nube” sin pensar en que datos llevan detrás, seguro que muchos aún no saben que llevan metadatos (“información de la imagen”) que nosotros no vemos a simple vista. Pero que si das click derecho a tu ratón sobre una imagen y vamos a propiedades y buscamos vemos mucha información, a continuación dejo unas capturas de como se ve esa información en Linux y Windows.

 

metadatosLinux.jpg

 

metadatosWindows.jpg

 

Vale esa información que vemos en las imágenes de arriba no es la más importante, no pueden saber mucho de nosotros, salvo con que hemos hecho la foto, en realidad si permites que tome tu ubicación la cámara también tendrá el lugar dónde se realizó la foto, y en Windows al menos se puede ver sin tener herramientas específicas (se encuentra en el mismo sitio que la anterior imagen Propiedades > Detalles), mirar la siguiente imagen (he borrado la información):

 

metadatosGPS.jpg

 

Si vamos a una página que al insertar la latitud y la longitud nos da la dirección exacta donde se tomó la foto, ya empieza a existir un cierto peligro, una persona mal intencionada puede averiguar donde vivimos.

 

 

En este tutorial os voy a enseñar un código en Ruby que extrae los metadatos de imáges jpeg, jpg, aunque también las puedes obtener de imágenes tiff.

 

Lo primero que necesitamos es instalar una librería externa llamada exifr, para ello ejecutamos la siguiente sentencia:

gem install exifr
Vamos a ver el código, si has programado algo con ruby te resultará muy sencillo:
require 'exifr'

imagen = '/home/ubuntu/solvetic.jpg'

if EXIFR::JPEG.new(imagen).exif? then
    print "Ancho: ",EXIFR::JPEG.new(imagen).width,"\n"       
    print "Alto: ",EXIFR::JPEG.new(imagen).height,"\n"  
    print "Modelo de cámara o móvil: ",EXIFR::JPEG.new(imagen).model,"\n"           
    print "Fecha: ",EXIFR::JPEG.new(imagen).date_time,"\n"
    if EXIFR::JPEG.new(imagen).gps then
        print "Latitud: ",EXIFR::JPEG.new(imagen).gps.latitude,"\n"
        print "Longitud: ",EXIFR::JPEG.new(imagen).gps.longitude,"\n"
    end
else
    puts "No hay metadatos"
end
Primero importamos la librería, declaramos una variable con la ruta de nuestra imagen y hacemos una pequeña comprobación, acto seguido solo vamos a ir sacando las propiedades de la imagen (si hay alguna propiedad que no tiene valor, simplemente se queda en blanco). En la parte final del if comprobaremos si tiene datos gps, para que no nos de un error si es un valor nulo, si los tiene los mostramos en pantalla.

 

Nota
Dónde ves el texto /home/ubuntu/solvetic.jpg debe ir la ruta de tu imagen.

 

Si ejecutamos el código, tenemos la siguiente salida en consola:

 

metadatosRuby.jpg

 

A continuación te dejo un zip con el código de arriba:

 

Fichero Adjunto  metadatosRuby.zip   373 bytes   202 Descargas


¿Te ayudó este Tutorial?


2 Comentarios


Anonimo Lolo
jun 26 2016 17:06
¿y se puede borrar esa información? Gracias

¿y se puede borrar esa información? Gracias

 

Si, hay herramientas específicas, uno de ellos es Metanull, pero si usas Windows puedes dar clic derecho del ratón en el archivo, luego das a propiedades, y en la pestaña detalles puedes pinchar en Quitar propiedades e información personal.

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X