Hace tiempo que tenía pendiente de terminar de escribir este post sobre metadatos. Si necesitas saber algo de alguien, actualmente los metadatos de los archivos a los que tengas acceso te pueden ayudar. Ya hace tiempo escribí un pequeño post sobre cómo obtener los metadatos de ficheros pdf de forma muy simple (a golpe de comando). Hoy vamos a ver cómo hacer lo mismo con una imagen y cómo aprovechar y extraer todo el jugo que esta valiosa información nos ofrece.
Lo primero de todo es instalar la herramienta que vamos a emplear. En nuestro caso será exiftool. En sistemas de base Debian la podéis encontrar disponible en los repositorios.
shell> apt-get install libimage-exiftool-perl
Una vez instalada ya sólo queda usarla. El único requisito, tener acceso a la imagen que os interese analizar. En mi caso me bajé una imagen de internet de la que se puede observar lo siguiente,
shell> exiftool imagen_4.jpg ExifTool Version Number : 8.15 File Name : imagen_4.jpg Directory : . File Size : 34 kB File Modification Date/Time : 2012:12:14 16:08:19+01:00 File Permissions : rw-r--r-- File Type : JPEG MIME Type : image/jpeg JFIF Version : 1.02 Resolution Unit : None X Resolution : 1 Y Resolution : 1 Comment : * Profile CMM Type : lcms Profile Version : 2.1.0 Profile Class : Display Device Profile Color Space Data : RGB Profile Connection Space : XYZ Profile Date Time : 2012:01:25 03:41:57 Profile File Signature : acsp Primary Platform : Apple Computer Inc. CMM Flags : Not Embedded, Independent Device Manufacturer : Device Model : Device Attributes : Reflective, Glossy, Positive, Color Rendering Intent : Perceptual Connection Space Illuminant : 0.9642 1 0.82491 Profile Creator : lcms Profile ID : 0 Profile Description : c2 Profile Copyright : FB Media White Point : 0.9642 1 0.82491 Media Black Point : 0.01205 0.0125 0.01031 Red Matrix Column : 0.43607 0.22249 0.01392 Green Matrix Column : 0.38515 0.71687 0.09708 Blue Matrix Column : 0.14307 0.06061 0.7141 Image Width : 600 Image Height : 450 Encoding Process : Progressive DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Image Size : 600x450

Aquí podemos ver información de la imagen y una de las cosas que más destaca es fue realizada con un equipo de Apple. Viendo la foto, se supone que con un iPhone. Otra de las cosas que llama la atención es la fecha y la hora en la que se tomó la foto, que también están perfectamente registradas. Sin embargo no se observa ningún dato más interesante. En este otro ejemplo tenemos lo siguiente:
shell> exiftool -a imagen_5.jpg ... Exif Byte Order : Little-endian (Intel, II) Make : google Camera Model Name : Nexus S Orientation : Rotate 90 CW Software : JZO54K ... Flash : No Flash ... Image Size : 2560x1920 ...
Aquí ya tenemos más información, como el dispositivo exacto con el que se sacó. En este caso mi Nexus S dejando huella. Sin embargo aquí todavía no hay datos 100% intenresantes, como puede ser la localización de la fotografía. Así que vamos a alguna red social y veamos lo que se puede obtener de ahí,
shell> exiftool -c "%d %d %.8f" imagen_9.jpg ... GPS Version ID : 2.2.0.0 GPS Latitude : 48 25 11.90280000 GPS Longitude Ref : East GPS Longitude : 7 25 22.11240000 E Image Size : 269x188 GPS Position : 48 25 11.90280000, 7 25 22.11240000 E
Para facilitar el trabajo, yo le doy un formato de salida a la posición (opción -c "%d %d %.8F") que ya GoogleMaps entenderá. Esta fotografía sí tiene datos de interés, como es su localización exacta. Si el valor del campo GPS Position lo buscamos directamente en GoogleMaps, veremos la zona en la que se sacó la foto. Ahora que ya sabéis lo que se puede obtener de una foto, es vuestra decisión compartir la posición o no.
Por cierto, si no os interesa descargar las imágenes sino que el proceso sea más continuo, se puede enlazar exiftool con wget, para que después de descarga la imagen automáticamente la escanee.
shell> wget -qO - http://www.../imagen_1.jpg | exiftool -fast -
Hola Javier, sabrías decirme si existe la posibilidad de extraer en una variable la fecha de la captura de la foto para usarla en un programa batch que lo necesito urgentemente. Muchas gracias de antemano.
ResponderEliminarHola,
EliminarLos datos que salen, salen por salida estándar de consola, por lo que puedes hacer operaciones con ellos. Con algún grep y algún awk creo que podrías hacer lo que te interesa sin mucho problema.