Libreria de manipulacion exif para python

Estoy buscando una buena biblioteca de manipulación exif (formato de archivo de imagen intercambiable) para python. Prefiero la flexibilidad (por ejemplo, la capacidad de recuperar tags de propiedad de los proveedores) a la velocidad de procesamiento. ¿Qué sugieres?

Es posible que desee revisar exif-py :

Biblioteca de Python para extraer datos EXIF ​​de archivos tiff y jpeg. Muy fácil de usar – $ ./EXIF.py image.jpg

o la biblioteca de imágenes de Python (PIL) :

La biblioteca de imágenes de Python (PIL) agrega capacidades de procesamiento de imágenes a su intérprete de Python. Esta biblioteca admite muchos formatos de archivo y proporciona potentes capacidades de gráficos y procesamiento de imágenes.

También está el apropiadamente llamado pyexif: http://pyexif.sourceforge.net/

La biblioteca y herramientas pyexif python tiene como objective extraer información EXIF ​​de los archivos Jpeg y Tiff que la incluyen. Esta información suele incluirse en imágenes creadas con dispositivos de imágenes digitales, como cámaras digitales, escáneres de películas digitales, etc.

Sin embargo, parece que pyexif no se ha actualizado en bastante tiempo. Recomiendan si el de ellos no está haciendo el truco para revisar EXIF-py, por lo que probablemente deberías probar ese primero, ya que su página de forjado de fonts parece tener alguna actividad allí últimamente, aunque no mucha. Finalmente, usando PIL puedes hacer esto:

from PIL import Image from PIL.ExifTags import TAGS def get_exif(fn): ret = {} i = Image.open(fn) info = i._getexif() for tag, value in info.items(): decoded = TAGS.get(tag, tag) ret[decoded] = value return ret 

Descargo de responsabilidad :
En realidad no tengo idea de cuál es la mejor, esto es lo que pude juntar con Google. 🙂

He estado usando pyexiv2 por mí mismo recientemente, y parece que se ajusta a mis necesidades bastante bien. Tal vez podría adaptarse a la suya también.

Soluciones basadas en Exiv2

Exiv2 (exiv2: http://exiv2.org/ ) es una biblioteca madura de código abierto de C ++ que admite la lectura y escritura de metadatos para muchos tipos de imágenes (JPEG, PNG, TIFF y muchos formatos sin formato), entiende estándar (Xmp, IPTC) y Exif) y metadatos no estándar (“Makernotes”), y se ejecuta en múltiples plataformas (Windows, Linux y, con algún trabajo, Mac).

Los enlaces de Python a exiv2 son:

Una ventaja de pyexiv2 es que hay una comstackción de windows disponible para python 2.7. Una solicitud de comstackción de Windows para gexiv2 está aquí: https://bugzilla.gnome.org/show_bug.cgi?id=712441

Exiv2 y los enlaces son todos de código abierto (GPL).

Este artículo describe un módulo de Python para escribir metadatos EXIF ​​(y no solo leerlos) utilizando Python puro. Aparentemente, ninguno de PIL, pyexif o EXIF-py admite la escritura EXIF. pyexiv2 parece ser de vanguardia y específico de la plataforma.

Usa PIL 🙂

 import os,sys from PIL import Image from PIL.ExifTags import TAGS if __name__ == '__main__': for (k,v) in Image.open(sys.argv[1])._getexif().iteritems(): print '%s = %s' % (TAGS.get(k), v) os.system('pause') 

También puede consultar la biblioteca jpeg.py de Gheorghe Milas en http://www.emilas.com/jpeg/ , que es “Una biblioteca de Python para analizar, leer y escribir metadatos JPEG EXIF, IPTC y COM”.

Un inconveniente es que parece estar alojando su dominio en una IP dinámica a través de DynDNS, por lo que no siempre está disponible.

de alguna manera obtengo un attributeError para _getexif con el código de Paolo anterior. Estoy usando Python 2.6.6 y PIL 1.1.7. Es _getexif obsoleto ahora?

Aquí hay una pequeña modificación que funcionó para mí.

 from PIL import Image from PIL.ExifTags import TAGS def get_exif(fn): ret = {} i = Image.open(fn) # info = i._getexif() info = i.tag.tags for tag, value in info.items(): decoded = TAGS.get(tag, tag) ret[decoded] = value return ret 

Comencé a escribir mi propia pequeña biblioteca basada en el código de PIL. Compruébalo aquí .

He estado usando mis propios envoltorios alrededor de http://www.sno.phy.queensu.ca/~phil/exiftool/ – la razón es que es muy completa, el desarrollo es muy activo. Y el hecho de no poder admitir casi todos los formatos de imagen es una prueba absoluta para el proyecto que se necesita para

El inconveniente, por supuesto, es que no es Python, por lo que necesitaría usar llamadas de subproceso, como lo hago yo.

La página en http://redmine.yorba.org/projects/gexiv2/wiki se lee ahora :

Esto funcionará igual de bien con Python 2 o 3, lo que hace que GExiv2 sea un excelente reemplazo para pyexiv2, que solo es compatible con Python 2.

Entonces, tanto Python2 como Python3 ahora son compatibles con GExiv2.

Buenas noticias.

Hay algunos ejemplos de uso de PIL y EXIF.py en ASPN

En Python 2.6 el lugar del módulo es diferente. Utilizar esta:

 import Image from ExifTags import TAGS