Я ищу хорошую библиотеку для манипуляций exif (Exchangeable image file format) для Python. Я предпочитаю гибкость (например, возможность получать собственные теги провайдеров), чем скорость обработки. Что ты предлагаешь?
Возможно, вопрос должен звучать так: «Какие параметры доступны для редактирования Exif (формат файла сменного изображения) с использованием Python, которые подчеркивают набор функций (например, возможность извлекать собственные теги провайдеров и совместимость с широким спектром форматов изображений) по скорости?»
dlm
1
@Wooble et al: «Если этот вопрос можно изменить, чтобы он соответствовал правилам справочного центра, пожалуйста, отредактируйте вопрос или оставьте комментарий». Я сделал последнее, но Q закрылся без дальнейших комментариев. Что дает? (Просто пытаюсь понять и не хочу тратить время на комментирование / редактирование вопросов, если это предрешено)
dlm
Я хотел узнать мнение других разработчиков, задавая этот вопрос! PackageOpinionOverflow?
Дерек Литц
1
Имейте в виду, что почти все решения, не относящиеся к exiv2, не будут иметь доступа MakerNote. В этот тег EXIF производители камер добавляют свои собственные теги, содержащие ценную информацию. Таким образом, вы получите только основные теги с большинством библиотек из приведенных ниже ответов.
Библиотека изображений Python (PIL) добавляет в интерпретатор Python возможности обработки изображений. Эта библиотека поддерживает множество форматов файлов и предоставляет мощные возможности обработки изображений и графики.
Библиотека и инструменты pyexif python предназначены для извлечения информации EXIF из файлов Jpeg и Tiff, которые ее включают. Эта информация обычно включается в изображения, созданные с помощью цифровых устройств обработки изображений, таких как цифровые камеры, цифровые пленочные сканеры и т. Д.
Однако похоже, что pyexif не обновлялся довольно давно. Они рекомендуют, если их трюк не помогает, проверить EXIF-py, поэтому вам, вероятно, следует сначала попробовать его, так как на их странице sourceforge в последнее время наблюдается некоторая активность, хотя и небольшая. Наконец, используя PIL, вы можете сделать это:
from PIL importImagefrom PIL.ExifTagsimport 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. :)
Ни одно из этих «решений» не может записывать теги EXIF обратно, поэтому они не являются решением вопроса.
odinho - Velmont
23
Хотя технически не позволяет писать теги EXIF, я нашел это очень полезным. +1 за написание кода.
Cerin
3
Нет PIL для Python 3.x
Более пяти
Хороший обзор. Просто примечание: exif-py в настоящее время, похоже, несовместим с Python 3.x (проверено с Python 3.3.3, см. Также github.com/ianare/exif-py/issues/12 ).
Для справки: pyexiv2 кажется наиболее поддерживаемым из всех и наиболее полным (включая запись тегов EXIF обратно в файл).
rbp
1
Можно ли легко установить pyexiv2 внутри виртуального окружения?
Мэтт Остин
2
Обслуживание кажется замедленным, а установка на Mac - это ад. : /
Vortexfive
6
Для тех, кому не все равно: к сожалению, pyexiv2 доступен только для Python 2.
texnic
1
<QUOTE src = " redmine.yorba.org/projects/gexiv2/wiki "> Это будет одинаково хорошо работать как с Python 2, так и с 3, что делает GExiv2 отличной заменой pyexiv2, который поддерживает только Python 2. </QUOTE>
jno
31
Решения на базе Exiv2
Exiv2 (exiv2: http://exiv2.org/ ) - это зрелая библиотека C ++ с открытым исходным кодом, которая поддерживает чтение и запись метаданных для многих типов изображений (JPEG, PNG, TIFF и многие необработанные форматы), понимает стандартные (Xmp, IPTC и Exif) и нестандартных метаданных («Makernotes») и работает на нескольких платформах (Windows, Linux и, с некоторой доработкой, Mac).
В этой статье описывается модуль Python для записи метаданных EXIF (а не только их чтения) с использованием чистого Python. Судя по всему, ни PIL, ни pyexif, ни EXIF-py не поддерживают запись EXIF. pyexiv2, похоже, является передовым и специфичным для платформы.
Вы также можете посмотреть библиотеку jpeg.py Георгия Миласа по адресу http://www.emilas.com/jpeg/ , которая представляет собой «Библиотеку Python для анализа, чтения и записи метаданных JPEG EXIF, IPTC и COM».
Недостатком является то, что он, похоже, размещает свой домен на динамическом IP-адресе через DynDNS, поэтому он не всегда доступен.
каким-то образом я получаю attributeError для _getexif с приведенным выше кодом Паоло .. Я использую Python 2.6.6 и PIL 1.1.7. _Getexif устарел ??
Вот небольшая модификация, которая у меня сработала.
from PIL importImagefrom PIL.ExifTagsimport 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
Я использовал свои собственные обертки вокруг http://www.sno.phy.queensu.ca/~phil/exiftool/
- причина в том, что он очень полный, разработчик очень активен. И невозможность поддерживать почти все форматы изображений является абсолютным препятствием для проекта, для которого он необходим.
Недостатком, конечно же, является то, что это не python, поэтому вам нужно будет использовать вызовы подпроцесса, как это делаю я.
MakerNote
. В этот тег EXIF производители камер добавляют свои собственные теги, содержащие ценную информацию. Таким образом, вы получите только основные теги с большинством библиотек из приведенных ниже ответов.Ответы:
Возможно, вы захотите проверить exif-py :
или библиотека изображений Python (PIL) :
Также есть метко названный pyexif: http://pyexif.sourceforge.net/
Однако похоже, что pyexif не обновлялся довольно давно. Они рекомендуют, если их трюк не помогает, проверить EXIF-py, поэтому вам, вероятно, следует сначала попробовать его, так как на их странице sourceforge в последнее время наблюдается некоторая активность, хотя и небольшая. Наконец, используя PIL, вы можете сделать это:
Отказ от ответственности :
я на самом деле понятия не имею, что лучше, это как раз то, что мне удалось собрать вместе с Google. :)
источник
pip
! github.com/python-pillow/PillowЯ сам недавно использовал pyexiv2 , и, похоже, он очень хорошо соответствует моим потребностям. Возможно, это подойдет и вам.
источник
Решения на базе Exiv2
Exiv2 (exiv2: http://exiv2.org/ ) - это зрелая библиотека C ++ с открытым исходным кодом, которая поддерживает чтение и запись метаданных для многих типов изображений (JPEG, PNG, TIFF и многие необработанные форматы), понимает стандартные (Xmp, IPTC и Exif) и нестандартных метаданных («Makernotes») и работает на нескольких платформах (Windows, Linux и, с некоторой доработкой, Mac).
Привязки Python к exiv2:
Одним из преимуществ pyexiv2 является то, что для python 2.7 доступна сборка Windows. Запрос на сборку Windows для gexiv2 находится здесь: https://bugzilla.gnome.org/show_bug.cgi?id=712441
exiv2 и привязки имеют открытый исходный код (GPL).
источник
pyexiv2
был разветвлен: py3exiv2.tuxfamily.org .В этой статье описывается модуль Python для записи метаданных EXIF (а не только их чтения) с использованием чистого Python. Судя по всему, ни PIL, ни pyexif, ни EXIF-py не поддерживают запись EXIF. pyexiv2, похоже, является передовым и специфичным для платформы.
источник
Используйте PIL :)
источник
Страница http://redmine.yorba.org/projects/gexiv2/wiki (стала https://wiki.gnome.org/Projects/gexiv2 ) теперь гласит :
Итак, как Python2, так и Python3 теперь поддерживаются GExiv2.
Хорошие новости.
источник
Вы также можете посмотреть библиотеку jpeg.py Георгия Миласа по адресу http://www.emilas.com/jpeg/ , которая представляет собой «Библиотеку Python для анализа, чтения и записи метаданных JPEG EXIF, IPTC и COM».
Недостатком является то, что он, похоже, размещает свой домен на динамическом IP-адресе через DynDNS, поэтому он не всегда доступен.
источник
каким-то образом я получаю attributeError для _getexif с приведенным выше кодом Паоло .. Я использую Python 2.6.6 и PIL 1.1.7. _Getexif устарел ??
Вот небольшая модификация, которая у меня сработала.
источник
Я начал писать свою небольшую библиотеку, основанную на коде в PIL. проверьте это здесь .
источник
Я использовал свои собственные обертки вокруг http://www.sno.phy.queensu.ca/~phil/exiftool/ - причина в том, что он очень полный, разработчик очень активен. И невозможность поддерживать почти все форматы изображений является абсолютным препятствием для проекта, для которого он необходим.
Недостатком, конечно же, является то, что это не python, поэтому вам нужно будет использовать вызовы подпроцесса, как это делаю я.
источник
Есть несколько примеров использования PIL и EXIF.py в ASPN.
источник
В Python 2.6 место модуля другое. Использовать это:
источник