Ver destacados

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.
Escrito por
9.9K Visitas  |  Publicado jun 22 2016 12:36
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


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.

 

 

 

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):

 

 

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:

 

 

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

 

metadatosRuby.zip   373 bytes   205 Descargas

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!