110 votes

Bibliothèque de manipulation Exif pour python

Je suis à la recherche d'une bonne bibliothèque de manipulation exif (Exchangeable image file format) pour python. Je préfère la flexibilité (par exemple, la possibilité de récupérer les balises propriétaires des fournisseurs) à la vitesse de traitement. Que me conseillez-vous ?

1 votes

La question devrait peut-être se lire comme suit : "Quelles sont les options disponibles pour éditer Exif (Exchangeable image file format) en utilisant python qui mettent l'accent sur l'ensemble des fonctionnalités (par exemple, la capacité de récupérer les balises propriétaires des fournisseurs et la compatibilité avec une grande variété de formats d'image) plutôt que sur la vitesse ?"

2 votes

@Wooble et al : "Si cette question peut être reformulée pour correspondre aux règles du centre d'aide, veuillez modifier la question ou laisser un commentaire." J'ai fait ce dernier, mais la Q a été fermée sans autre commentaire. Que se passe-t-il ? (J'essaie juste de comprendre, et je ne veux pas perdre de temps à commenter/éditer des questions si c'est une fatalité).

0 votes

Je voulais connaître l'avis d'autres développeurs en posant cette question ! Débordement d'opinions sur les paquets ?

65voto

Paolo Bergantino Points 199336

Vous pourriez vouloir vérifier exif-py :

Bibliothèque Python pour extraire les données EXIF des fichiers tiff et jpeg. Très facile à utiliser - $ ./EXIF.py image.jpg

ou le Bibliothèque d'imagerie Python (PIL) :

La bibliothèque Python Imaging Library (PIL) ajoute des capacités de traitement d'images à votre interpréteur Python. Cette bibliothèque prend en charge de nombreux formats de fichiers et offre de puissantes capacités de traitement d'images et de graphiques.

Il y a aussi le bien nommé pyexif : http://pyexif.sourceforge.net/

La bibliothèque et les outils python pyexif visent à extraire les informations EXIF des fichiers Jpeg et Tiff qui en contiennent. Ces informations sont généralement incluses dans les images créées à l'aide de dispositifs d'imagerie numérique tels que les appareils photo numériques, les scanners de films numériques, etc.

Cependant, il semble que pyexif n'ait pas été mis à jour depuis un certain temps. Ils recommandent, si le leur ne fonctionne pas, d'essayer EXIF-py, donc vous devriez probablement essayer celui-là en premier, car leur page sourceforge semble avoir été mise à jour. un peu de Il y a eu de l'activité récemment, mais pas beaucoup. Enfin, en utilisant PIL, vous pourriez 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

Avis de non-responsabilité :
Je n'ai aucune idée de ce qui est le mieux, c'est juste ce que j'ai pu trouver avec Google :)

23 votes

Aucune de ces "solutions" ne peut réécrire les balises EXIF, elles ne constituent donc pas une solution à la question.

23 votes

Bien que, techniquement, il ne permette pas d'écrire des balises EXIF, je l'ai trouvé très utile. +1 pour l'écriture du code.

3 votes

Pas de LIP pour Python 3.x

59voto

Lars Wirzenius Points 12197

J'ai utilisé pyexiv2 J'en ai fait l'expérience récemment, et il semble qu'il réponde parfaitement à mes besoins. Il pourrait peut-être convenir aux vôtres également.

10 votes

Pour mémoire, pyexiv2 semble être le mieux maintenu de tous, et le plus complet (y compris la réécriture des balises EXIF dans le fichier).

1 votes

Peut-on facilement installer pyexiv2 dans un virtualenv ?

2 votes

La maintenance semble être ralentie, et l'installation sur Mac est un enfer. :/

31voto

dlm Points 655

Solutions basées sur Exiv2

Exiv2 (exiv2 : http://exiv2.org/ ) est une bibliothèque C++ mature, à code source ouvert, qui prend en charge la lecture et l'écriture de métadonnées dans de nombreux types d'images (JPEG, PNG, TIFF et de nombreux formats bruts), comprend les métadonnées standard (Xmp, IPTC et Exif) et non standard ("Makernotes"), et fonctionne sur plusieurs plates-formes (Windows, Linux et, avec un peu de travail, 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 build Windows pour gexiv2 est disponible ici : https://bugzilla.gnome.org/show_bug.cgi?id=712441

exiv2 et les liaisons sont tous open source (GPL).

0 votes

Mise à jour basée sur les dernières informations concernant les liens avec exiv2

0 votes

pyexiv2 a été bifurqué : py3exiv2.tuxfamily.org .

0 votes

Le lien vers tilloy.net est mort

5voto

Jason R. Coombs Points 11130

Cet article décrit un module Python permettant d'écrire des métadonnées EXIF (et pas seulement de les lire) en utilisant du Python pur. Apparemment, ni PIL, ni pyexif, ni EXIF-py ne prennent en charge l'écriture de métadonnées EXIF. pyexiv2 semble être à la pointe du progrès et spécifique à une plate-forme.

0 votes

Je ne suis pas sûr que cela puisse être considéré comme moins avant-gardiste.

4voto

Max Points 59

Utilisez le LIP :)

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')

2 votes

Pure PIL / Pillow ne permet pas de modifier les balises EXIF. Mais il existe une petite bibliothèque qui permet de le faire : github.com/hMatoba/Pyxif

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X