Я ищу хорошую библиотеку манипуляций exif (Exchangeable image file) для python. Я предпочитаю гибкость (например, способность извлекать проприетарные теги провайдеров), чем скорость обработки. Что ты предлагаешь?
Библиотека манипулирования Exif для 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:
- gexiv2 (многоязыковая привязка, но работает с python 2.6/2.7/3.X): https://wiki.gnome.org/gexiv2
- pyexiv2 (больше не поддерживается, но работает с python 2.6/2.7): http://tilloy.net/dev/pyexiv2/
Одно из преимуществ pyexiv2 заключается в том, что для python 2.7 имеется сборка окон. Запрос на сбор окон для gexiv2 находится здесь: https://bugzilla.gnome.org/show_bug.cgi?id=712441
exiv2, а привязки - все с открытым исходным кодом (GPL).
Ответ 4
Ответ 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