Manipulación de metadatos de imágenes con Python 3.x
En las imágenes digitales se pueden incrustar datos como autor, fecha de creación, descripción, permisos, entre otros, de tal forma que estos datos viajen siempre con ellas. Aprenda a leer y a escribir estos metadatos usando Python 3 y gexiv2.

En las imágenes digitales se pueden incrustar datos como autor, fecha de creación, descripción, copyright, entre otros, de tal forma que estos datos viajen siempre con ellas [1].
La imagen de la Figura 1, por ejemplo, fue manipulada con un script escrito en Python y que usa gexiv2 para agregar metadatos. Si se descarga la imagen y se inspeccionan sus propiedades, pueden leerse los siguientes metadatos:

Formatos de metadatos
Parece que hay tres formatos populares para incrustar metadatos en imágenes:
De los tres anteriores, XMP parece mejor por ser un estándar ISO y porque es compatible con más formatos de imágenes (y otros tipos de archivos). Los siguientes ejemplos usan XMP como formato de metadatos.
Ejemplo 1: Leer metadatos
from gi.repository import GExiv2 # Obtener metadatos actuales de la imagen image = "diatoms.jpg" metadata = GExiv2.Metadata(image) # Imprimir todos los metadatos for key in metadata: print("{}: {}".format(key, metadata[key]))
Al ejecutar el código anterior, en este caso guardado como archivo read.py al mismo nivel de la imagen que aparece al inicio de esta entrada, se pueden leer los metadatos en el terminal:
$ python3 read.py Xmp.dc.contributor: NSF Polar Programs Xmp.dc.creator: Prof. Gordon T. Taylor, Stony Brook University Xmp.dc.date: 1983-01-20 Xmp.dc.description: lang="x-default" Assorted diatoms as seen through a microscope. These specimens were living between crystals of annual sea ice in McMurdo Sound, Antarctica. Image digitized from original 35mm Ektachrome slide. These tiny phytoplankton are encased within a silicate cell wall. Xmp.dc.rights: lang="x-default" Public domain Xmp.dc.source: http://www.photolib.noaa.gov/htmls/corp2365.htm Xmp.dc.subject: Antartica, Oceanography, Biological, Diatoms Xmp.dc.title: lang="x-default" Diatoms through the microscope
Ejemplo 2: Escribir metadatos
Los metadatos de la imagen de la Figura 1 se agregaron usando el siguiente código sobre la imagen original, que no contenía metadatos XMP.
from datetime import datetime from gi.repository import GExiv2 # Obtener metadatos actuales de la imagen image = "diatoms.jpg" metadata = GExiv2.Metadata(image) # Agregar metadatos XMP y guardarlos junto con la imagen metadata["Xmp.dc.title"] = "Diatoms through the microscope" metadata["Xmp.dc.date"] = datetime(1983, 1, 20).strftime("%Y-%m-%d") metadata["Xmp.dc.description"] = """ Assorted diatoms as seen through a microscope. These specimens were living between crystals of annual sea ice in McMurdo Sound, Antarctica. Image digitized from original 35mm Ektachrome slide. These tiny phytoplankton are encased within a silicate cell wall. """ metadata["Xmp.dc.subject"] = "Antartica, Oceanography, Biological, Diatoms" metadata["Xmp.dc.creator"] = "Prof. Gordon T. Taylor, Stony Brook University" metadata["Xmp.dc.contributor"] = "NSF Polar Programs" metadata["Xmp.dc.rights"] = "Public domain" metadata["Xmp.dc.source"] = "http://www.photolib.noaa.gov/htmls/corp2365.htm" metadata.save_file()
[1] | Realmente los metadatos viajan con la imagen hasta que otro software decide modificarlos o eliminarlos. Por ejemplo, si subo una imagen con metadatos como los que se presentan en esta entrada a un blog de WordPress.com, WordPress los elimina. ¿Por qué lo hacen? No sé. |
Temas relacionados: