La herramienta EXIF es un registrador de información de metadatos ampliamente utilizado creado en Perl por Phil Harvey. Es una herramienta de código abierto única que funciona en una variedad de tipos de archivos. EXIF significa formato de archivo de imagen intercambiable y se utiliza principalmente para incluir metadatos en varios tipos de archivos como txt, png, jpeg, pdf, HTML y muchos más. Con la herramienta EXIF también podemos leer, escribir y manipular dicha información de metadatos.
Instalación:
Exiftool es una herramienta de código abierto. La biblioteca está construida con la biblioteca Perl independiente de la plataforma.
1. Clone el repositorio git en su sistema.
git clone https://github.com/exiftool/exiftool.git
2. Pruebe la herramienta con un archivo de prueba presente en el repositorio
cd exiftool ./exiftool t/images/ExifTool.jpg
Alternativamente, en la distribución de Ubuntu puedes usar:
sudo apt install libimage-exiftool-perl
O simplemente use el siguiente comando, capturará automáticamente el comando anterior.
sudo apt install exiftool
Para descargar directamente desde la fuente, use los siguientes comandos. Esto funcionará para cualquier distribución de Linux, incluido CentOS.
wget https://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.16.tar.gz tar xvf Image-ExifTool-12.16.tar.gz cd Image-ExifTool-12.16/ ./exiftool t/images/ExifTool.jpg
Para instalarlo globalmente, instale el archivo.
Nota: como se ejecuta en Perl, debe tener Perl instalado en su distribución de Linux.
perl Makefile.PL make make test make install
Ahora puede ejecutar ExifTool en cualquier lugar de su terminal escribiendo exiftool.
Uso:
Lectura de metadatos:
1. Para extraer la lista completa de metadatos del archivo, use el siguiente comando.
exiftool <filename>
2. Para extraer los identificadores junto con las etiquetas Exif en su formato hexadecimal, ejecute el comando anterior con el indicador -H.
exiftool -H <filename>
3. ExifTool mantiene la lista de etiquetas Exif más comunes para un archivo, que se puede ver con el siguiente indicador.
exiftool --common <filename>
4. Con ExifTool también podemos extraer la imagen de vista previa o la miniatura de un archivo de imagen.
exiftool -PreviewImage [filename.jpg] > [Output.jpg] exiftool -ThumbnailImage [filename.jpg] > [Output.jpg]
Ejemplo:
exiftool -b -PreviewImage CSM30803.CR2 > abc.jpg
-b para extraer información binaria y almacenar el resultado en el archivo abc.jpg
exiftool -b -ThumbnailImage CSM30803.CR2 > thumb.jpg
5. También podemos generar información extendida con modo detallado. Esto nos mostrará los datos completos sobre el proceso que está realizando.
exiftool -v <filename>
Escribir metadatos:
Para editar cualquier metadato, podemos usar su etiqueta Exif correspondiente para realizar los cambios.
Nota: Solo podemos cambiar las etiquetas que no están protegidas contra escritura.
exiftool -<Exif Tag>= “Geek Alert” <filename>
Eliminación de metadatos:
Si queremos borrar toda la información existente dentro de las metaetiquetas del archivo, podemos utilizar el siguiente comando. Este comando eliminará todos los metadatos del archivo dejando toda la información de etiqueta básica o protegida.
exiftool -all= <filename>
Guardar metadatos:
Podemos guardar la salida de exiftool dentro de otro archivo (preferiblemente un archivo de texto) para almacenar la información para su uso posterior.
exiftool [filename] > [meta-data.txt] cat <meta-data.txt>
Solicitud:
1. Clasificación de archivos de imagen en carpetas por año y mes
Podemos combinar la información de los metadatos para resolver una variedad de tareas. Supongamos que tenemos muchas imágenes y queremos clasificarlas en nuevas carpetas y organizarlas por año, mes o día, entonces podemos usar el siguiente comando:
El comando copia las imágenes antiguas en directorios según su año y mes.
exiftool -o '-Directory<CreateDate' -d ./newimage/%y/%y%m -r ./oldimage
- -o hacer copias de todas las imágenes (en lo sucesivo denominadas imágenes antiguas) y crear nuevas imágenes a partir de ellas
- -Directory<CreateDate mueve las imágenes a sus nuevas carpetas de destino utilizando la fecha de creación de la imagen
- ./newimage/%y/%y%m es la ruta relativa al nuevo directorio, sigue la convención de nomenclatura como año seguido del subdirectorio como año mes.
- -r es la ejecución recursiva del comando sobre la carpeta de origen
- ./oldimages es la carpeta de origen donde se almacenan las imágenes originales
Ejemplo:
Para realizar un cambio en el directorio actual, mueva la imagen a los directorios.
exiftool '-Directory<CreateDate' -d %Y/%m-%d .
Podemos ver que las imágenes se mueven a una nueva carpeta con el año y luego las subcarpetas mes-día.
2. Cambiar el nombre de los archivos de imagen según su fecha de creación
Supongamos que está trabajando para una empresa de fotografía e hizo clic en las fotos de muchos eventos, pero las fotos se mezclaron y ahora segregar manualmente cada imagen requerirá mucho esfuerzo desperdiciado.
Aquí aprovecharemos la herramienta exif para segregar/cambiar el nombre de todos los archivos sin procesar presentes dentro de la carpeta actual y su subcarpeta de acuerdo con la etiqueta exif de los metadatos Create Date and Time.
exiftool '-filename<CreateDate' -d %y%m%d-%H%M%S%%-03.c.%%e -r ./imagepath
- -filename<CreateDate cambia el nombre de las imágenes sin procesar utilizando los datos y la hora de creación de la imagen
- -d establece el formato para los valores de fecha/hora
- %y%m%d-%H%M%S%%-03.c.%%e es el formato para cambiar el nombre del archivo.
Por ejemplo: Esto cambiaría el nombre de un archivo tomado el 1 de febrero de 2021 a las 14:08 a 20210201-1408-000.xxx. Los tres ceros después de la hora son un número de copia colocado allí por %%-03.c en el formato de fecha.
Al cambiar el nombre de los archivos, el número de copias sigue aumentando hasta que encuentra un nombre de archivo que aún no existe.
- .%%e mantiene la extensión del nombre de archivo original
- Use .%%le (para cambiar el nombre de la extensión en minúsculas) o .%%ue (para cambiar el nombre en mayúsculas)
- -r es la ejecución recursiva del comando sobre la carpeta de origen
- ./imagepath es la ruta relativa al directorio con todas sus imágenes para cambiar el nombre.
Ejemplo:
Para hacer un cambio en el directorio actual.
exiftool -d %Y-%m-%d_%H.%M.%S%%-c.%%e "-filename<CreateDate" .
ExifTool es una herramienta muy poderosa para manipular metadatos de archivos. Tiene una amplia gama de aplicaciones y con todas esas banderas y opciones, las posibilidades son infinitas.