exiftool, extract image metadata

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 -


2 comentarios :

  1. 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.

    ResponderEliminar
    Respuestas
    1. Hola,

      Los 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.

      Eliminar

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios