Je cherche une bonne bibliothèque de manipulation exif (format de fichier image échangeable) pour python. Je préfère la flexibilité (par exemple, la capacité de récupérer les étiquettes propriétaires des fournisseurs) à la vitesse de traitement. Que suggérerais-tu?
Vous voudrez peut-être vérifier exif-py :
Bibliothèque Python pour extraire des données EXIF à partir de fichiers tiff et jpeg. Très facile à utiliser - $ ./EXIF.py image.jpg
ou le Python Imaging Library (PIL) :
La bibliothèque d'imagerie (PIL) Python) ajoute des fonctionnalités de traitement des images à votre interpréteur Python. Cette bibliothèque prend en charge de nombreux formats de fichiers et fournit de puissantes fonctionnalités de traitement des images et de graphisme.
Il y a aussi le pyexif bien nommé: http://pyexif.sourceforge.net/
La bibliothèque et les outils pyexif python permettent d'extraire des informations EXIF des fichiers Jpeg et Tiff qui les incluent. Ces informations sont généralement incluses dans des images créées à l'aide de dispositifs d'imagerie numériques tels que des appareils photo numériques, des scanneurs numériques de film, etc. etc.
Cependant, il semble que pyexif n'ait pas été mis à jour depuis assez longtemps. Ils recommandent que si leur ne fait pas le tour pour vérifier EXIF-py, alors vous devriez probablement essayer celui-là en premier, car leur page sourceforge semble avoir certains activité là-bas ces derniers temps, mais pas beaucoup . Enfin, en utilisant PIL, vous pouvez faire ceci:
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
Clause de non-responsabilité :
En fait, je ne sais pas du tout ce qui convient le mieux. C’est ce que j’ai pu rassembler avec Google. :)
J'utilise pyexiv2 moi-même récemment, et il semble bien répondre à mes besoins. Cela conviendra peut-être aussi au vôtre.
Exiv2 (exiv2: http://exiv2.org/ ) est une bibliothèque mature et open source C++ qui prend en charge la lecture et l'écriture de métadonnées sur de nombreux types d'images (JPEG, PNG, TIFF et de nombreux formats bruts). , comprend les métadonnées standard ("Makernotes") et non standard (Xmp, IPTC et Exif), et s’exécute sur plusieurs plates-formes (Windows, Linux et, avec certains travaux, Mac).
Les liaisons Python à exiv2 sont:
Un avantage de pyexiv2 est qu’il existe une version Windows disponible pour python 2.7. Une demande de construction Windows pour gexiv2 est ici: https://bugzilla.gnome.org/show_bug. cgi? id = 712441
exiv2 et les liaisons sont tous à code source ouvert (GPL).
Utilisez PIL :)
import os,sys
from PIL import Image
from PIL.ExifTags import TAGS
if __== '__main__':
for (k,v) in Image.open(sys.argv[1])._getexif().iteritems():
print '%s = %s' % (TAGS.get(k), v)
os.system('pause')
Cet article décrit un module Python) permettant d'écrire des métadonnées EXIF (et pas seulement de les lire) à l'aide de Python pur. Apparemment, aucun support PIL, pyexif, ni EXIF-py L'écriture EXIF pyexiv2 semble être spécifique à la plateforme et à la taille.
La page sur http://redmine.yorba.org/projects/gexiv2/wiki se lit maintenant :
Cela fonctionnera aussi bien avec Python 2 ou 3, ce qui fait de GExiv2 un excellent substitut de pyexiv2, qui ne prend en charge que Python 2.
Ainsi, à la fois Python2 et Python3 sont maintenant supportés par GExiv2.
Bonnes nouvelles.
J'utilise mes propres wrappers http://www.sno.phy.queensu.ca/~phil/exiftool/ - c'est parce qu'il est très complet, le dev est très actif . Et ne pas être en mesure de prendre en charge presque tous les formats d'image est un obstacle absolu pour le projet dont il a besoin pour
Bien sûr, l’inconvénient est qu’il ne s’agit pas de python. Vous devez donc utiliser des appels de sous-processus, comme je le fais.
Vous pouvez également consulter la bibliothèque jpeg.py de Gheorghe Milas à l’adresse http://www.emilas.com/jpeg/ , qui est "A python bibliothèque à analyser , lisez et écrivez les métadonnées JPEG EXIF, IPTC et COM. "
Un inconvénient est qu'il semble héberger son domaine sur une adresse IP dynamique via DynDNS, de sorte qu'il n'est pas toujours disponible.
J'ai commencé à écrire ma propre petite bibliothèque basée sur le code de PIL. vérifiez ici .
en quelque sorte, j'obtiens un attributeError pour _getexif avec le code de Paolo ci-dessus. J'utilise Python 2.6.6 et PIL 1.1.7. Est-ce que _getexif est obsolète maintenant?
Voici une petite modification qui a fonctionné pour moi.
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
Il existe quelques exemples d’utilisation de PIL et EXIF.py sur ASPN
Dans Python 2.6 la place du module est différente. Utilisez ceci:
import Image
from ExifTags import TAGS