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 exifrVamos 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" endPrimero 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.
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 220 Descargas