Библиотека манипулирования Exif для python

Я ищу хорошую библиотеку манипуляций exif (Exchangeable image file) для python. Я предпочитаю гибкость (например, способность извлекать проприетарные теги провайдеров), чем скорость обработки. Что ты предлагаешь?

Ответ 1

Возможно, вы захотите проверить exif-py:

Библиотека Python для извлечения EXIF-данных из файлов tiff и jpeg. Очень проста в использовании - $./EXIF.py image.jpg

или Библиотека изображений Python (PIL):

Библиотека изображений Python (PIL) добавляет возможности обработки изображений к вашему интерпретатору Python. Эта библиотека поддерживает множество форматов файлов и обеспечивает мощную обработку изображений и графические возможности.

Там также метко названный pyexif: http://pyexif.sourceforge.net/

Библиотека и инструменты pyexif python нацелены на извлечение информации EXIF ​​из файлов Jpeg и Tiff, которые включают ее. Эта информация обычно включается в изображения, созданные с использованием цифровых устройств формирования изображений, таких как цифровые камеры, цифровые пленочные сканеры и т.д.

Однако, похоже, что pyexif не обновлялся довольно давно. Они рекомендуют, если они не делают трюк, чтобы проверить EXIF-py, поэтому вы, вероятно, должны сначала попробовать это, так как на их странице sourceforge, похоже, есть активность в последнее время, хотя и не так много. Наконец, используя PIL, вы можете сделать это:

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

Отказ:
На самом деле я понятия не имею, что лучше, это именно то, что я смог собрать вместе с Google.:)

Ответ 2

Я недавно использовал pyexiv2, и, похоже, он мне очень понравился. Возможно, это может подойти и вам.

Ответ 3

Решения на основе Exiv2

Exiv2 (exiv2: http://exiv2.org/) - это зрелая библиотека С++ с открытым исходным кодом, которая поддерживает чтение и запись метаданных во многие типы изображений ( JPEG, PNG, TIFF и многие необработанные форматы), понимает стандартные (Xmp, IPTC и Exif) и нестандартные метаданные ( "Макерноты" ) и работает на нескольких платформах (Windows, Linux и, с некоторыми работами, Mac).

Связи Python с exiv2:

Одно из преимуществ pyexiv2 заключается в том, что для python 2.7 имеется сборка окон. Запрос на сбор окон для gexiv2 находится здесь: https://bugzilla.gnome.org/show_bug.cgi?id=712441

exiv2, а привязки - все с открытым исходным кодом (GPL).

Ответ 5

Использовать 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')

Ответ 6

Вы также можете посмотреть библиотеку jpeg.py Gheorghe Milas в http://www.emilas.com/jpeg/, которая представляет собой "библиотеку python для разбора, чтения и записывать метаданные JPEG EXIF, IPTC и COM".

Недостатком является то, что он, кажется, размещает свой домен на динамическом IP через DynDNS, поэтому он не всегда доступен.

Ответ 7

как-то я получаю атрибутError для _getexif с кодом Paolo выше.. Я использую Python 2.6.6 и PIL 1.1.7. Является ли _getexif устаревшим сейчас?

Вот небольшая модификация, которая сработала для меня.

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

Ответ 8

Я начал писать свою небольшую библиотеку, основанную на коде в PIL. проверьте здесь.

Ответ 9

Я использовал свои собственные обертки вокруг http://www.sno.phy.queensu.ca/~phil/exiftool/ - причина в том, что она очень полная, разработчик очень активен. И неспособность поддерживать почти все форматы изображений - это абсолютный showstopper для проекта, который необходим для

Конечно, недостатком является то, что он не является питоном, поэтому вам нужно будет использовать вызовы подпроцесса, как и я.

Ответ 10

Страница http://redmine.yorba.org/projects/gexiv2/wiki читает сейчас:

Это будет одинаково хорошо работать с Python 2 или 3, что делает GExiv2 - отличная замена для pyexiv2, которая поддерживает только Python 2.

Итак, оба Python2 и Python3 теперь поддерживаются GExiv2.

Хорошие новости.

Ответ 11

Есть несколько примеров использования PIL и EXIF.py на ASPN

Ответ 12

В Python 2.6 место модуля отличается. Используйте это:

import Image    
from ExifTags import TAGS