파이썬 용 Exif 조작 라이브러리 [닫힘]


108

파이썬을위한 좋은 exif (Exchangeable image file format) 조작 라이브러리를 찾고 있습니다. 처리 속도보다 유연성 (예 : 공급자의 독점 태그 검색 기능)을 선호합니다. 무엇을 제안 하시겠습니까?


아마도 질문은 다음과 같아야합니다. "속도에 비해 기능 집합 (예 : 공급자의 독점 태그 검색 및 다양한 이미지 형식과의 호환성)을 강조하는 Python을 사용하여 Exif (교환 가능한 이미지 파일 형식)를 편집하는 데 사용할 수있는 옵션은 무엇입니까?"
dlm

1
@Wooble 외 : "이 질문을 도움말 센터의 규칙에 맞게 변경할 수있는 경우 질문을 수정하거나 의견을 남겨주세요." 나는 후자를했지만 Q는 더 이상 언급하지 않고 닫혔다. 무엇을 제공합니까? (그냥 이해하려고 노력하고, 그저 결론이났다면 질문에 대한 논평 / 편집에 시간을 낭비하고 싶지 않습니다.)
dlm

이 질문을 할 때 다른 개발자들의 의견을 원했습니다! PackageOpinionOverflow?
Derek Litz 2013 년

1
여기에있는 exiv2 이외의 거의 모든 솔루션은 MakerNote. 이 EXIF ​​태그에서 카메라 제조업체는 귀중한 정보를 담고있는 자체 태그를 추가합니다. 따라서 아래 답변에서 대부분의 라이브러리에 대한 기본 태그 만 얻을 수 있습니다.
user136036

답변:


65

exif-py 를 확인하는 것이 좋습니다 .

tiff 및 jpeg 파일에서 EXIF ​​데이터를 추출하는 Python 라이브러리. 사용하기 매우 쉬움-$ ./EXIF.py image.jpg

또는 Python Imaging Library (PIL) :

Python Imaging Library (PIL)는 Python 인터프리터에 이미지 처리 기능을 추가합니다. 이 라이브러리는 다양한 파일 형식을 지원하며 강력한 이미지 처리 및 그래픽 기능을 제공합니다.

적절한 이름의 pyexif도 있습니다 : http://pyexif.sourceforge.net/

pyexif python 라이브러리 및 도구는이를 포함하는 Jpeg 및 Tiff 파일에서 EXIF ​​정보를 추출하는 것을 목표로합니다. 이 정보는 일반적으로 디지털 카메라, 디지털 필름 스캐너 등과 같은 디지털 이미징 장치를 사용하여 만든 이미지에 포함됩니다.

그러나 pyexif가 한동안 업데이트되지 않은 것 같습니다. 그들의은 EXIF-평을 조사하기 위해 트릭을 수행하지 않을 경우 자신의 소스 포지 페이지가 갖고있는 것 같아요 당신이 아마 먼저 하나를 시도해야한다, 그래서 그들은 권장 몇 가지 최근에이 활동을하지만별로. 마지막으로 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과 함께 할 수 있었던 것입니다. :)


19
이러한 "솔루션"중 어느 것도 EXIF ​​태그를 다시 쓸 수 없으므로 질문에 대한 솔루션이 아닙니다.
odinho-Velmont 2011 년

22
기술적으로 EXIF ​​태그 작성을 허용하지 않지만 이것이 매우 유용하다는 것을 알았습니다. +1 코드 작성.
Cerin

3
파이썬 3.x에 대한 PIL 없습니다
개 이상

좋은 개요. 참고 : exif-py는 현재 Python 3.x와 호환되지 않는 것 같습니다 (Python 3.3.3에서 테스트 됨, github.com/ianare/exif-py/issues/12 참조 ).
cel

3
@MoreThanFive 과도하게 관리되고 통합되는 PIL 포크가 있습니다 pip! github.com/python-pillow/Pillow
ibizaman 2014-08-10

59

나는 최근에 pyexiv2를 직접 사용 하고 있으며 내 요구에 아주 잘 맞는 것 같습니다. 아마도 그것은 당신에게도 적합 할 것입니다.


9
기록을 위해 : pyexiv2는 모두 가장 잘 유지되고 가장 완벽하게 보입니다 (EXIF 태그를 파일에 다시 쓰는 것을 포함하여).
rbp

1
pyexiv2를 virtualenv 내에 쉽게 설치할 수 있습니까?
Matt Austin

2
유지 관리가 느려지고 Mac에서의 설치는 지옥입니다. : /
Vortexfive 2012 년

6
관심있는 분들을 위해 : 불행히도 pyexiv2는 Python 2에서만 사용할 수 있습니다.
texnic

1
<QUOTE src = " redmine.yorba.org/projects/gexiv2/wiki "> 이것은 Python 2 또는 3에서 똑같이 잘 작동하므로 GExiv2는 Python 2 만 지원하는 pyexiv2의 훌륭한 대체품이됩니다. </ QUOTE>
jno

31

Exiv2 기반 솔루션

Exiv2 (exiv2 : http://exiv2.org/ )는 많은 이미지 유형 (JPEG, PNG, TIFF 및 다양한 원시 형식)에 대한 메타 데이터 읽기 및 쓰기를 지원하고 표준 (Xmp, IPTC)을 이해하는 성숙한 오픈 소스 C ++ 라이브러리입니다. 및 Exif) 및 비표준 메타 데이터 ( "Makernotes")가 있으며 여러 플랫폼 (Windows, Linux 및 일부 작업이있는 Mac)에서 실행됩니다.

exiv2에 대한 Python 바인딩은 다음과 같습니다.

pyexiv2의 한 가지 장점은 Python 2.7에 사용할 수있는 Windows 빌드가 있다는 것입니다. gexiv2에 대한 Windows 빌드 요청은 다음과 같습니다. https://bugzilla.gnome.org/show_bug.cgi?id=712441

exiv2 및 바인딩은 모두 오픈 소스 (GPL)입니다.


exiv2 바인딩에 대한 최신 정보를 기반으로 업데이트
dlm

pyexiv2분기되었습니다 : py3exiv2.tuxfamily.org .
Artem Klevtsov

tilloy.net 링크 죽은
jtlz2

5

이 기사에서는 순수 Python을 사용하여 EXIF ​​메타 데이터를 작성하는 (읽기만하는 것이 아니라) Python 모듈을 설명합니다. 분명히 PIL, pyexif 또는 EXIF-py는 EXIF ​​작성을 지원하지 않습니다. pyexiv2는 최첨단이며 플랫폼에 따라 다릅니다.


이것이 덜 블리딩 에지로 간주 될 수 있는지 확실하지 않습니다.
Mad Physicist

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

1
Pure PIL / Pillow는 EXIF ​​태그 수정을 허용하지 않습니다. 그러나 거기에 돕는 작은 도서관 : github.com/hMatoba/Pyxif
사이먼 스타 인 버거

4

에서 페이지 http://redmine.yorba.org/projects/gexiv2/wiki는 (이되었다 https://wiki.gnome.org/Projects/gexiv2가 읽는) 지금 :

이것은 Python 2 또는 3에서 똑같이 잘 작동하므로 GExiv2는 Python 2 만 지원하는 pyexiv2의 훌륭한 대체품입니다.

따라서 이제 Python2와 Python3 모두 GExiv2에서 지원됩니다.

좋은 소식.


2
링크가 작동하지 않습니다. 이 작품 wiki.gnome.org/Projects/gexiv2을
user881300

좋은 업데이트! 2013 년 이후 3 년이 지났습니다 ...
jno

3

http://www.emilas.com/jpeg/ 에서 Gheorghe Milas의 jpeg.py 라이브러리를 볼 수도 있습니다 . . 이는 "JPEG EXIF, IPTC 및 COM 메타 데이터를 구문 분석하고 읽고 쓰는 Python 라이브러리"입니다.

단점은 DynDNS를 통해 동적 IP에서 자신의 도메인을 호스팅하는 것처럼 보이므로 항상 사용할 수있는 것은 아닙니다.


더 이상 존재하지 않습니다.
Simon Steinberger

3

어떻게 든 위의 Paolo의 코드로 _getexif에 대한 attributeError가 발생합니다. 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

3

저는 PIL의 코드를 기반으로하는 저만의 작은 라이브러리를 작성하기 시작했습니다. 여기에서 확인하십시오 .


1
이봐, 좋아 보인다. 날카로운 모서리가 있습니까?
Rich

@Rich : 더 이상 기억이 나지 않습니다. 그것은 나를 위해 일했습니다.
Albert

3

나는 http://www.sno.phy.queensu.ca/~phil/exiftool/ 주위에 내 자신의 래퍼를 사용하고 있습니다 -그 이유는 그것이 매우 완전하고 개발이 매우 활동 적이기 때문입니다. 그리고 거의 모든 이미지 형식을 지원할 수 없다는 것은 그것이 필요한 프로젝트의 절대적인 돋보입니다.

물론 단점은 파이썬이 아니기 때문에 저처럼 하위 프로세스 호출을 사용해야한다는 것입니다.


exiftool github.com/smarnach/pyexiftool 용 python 래퍼가 있습니다 . 매우 완전하다는 사실에 대해 exiftool에 대한 한 표.
Long Vu

그는 Python lib를 요청하고 있습니다.
Diego Woitasen 2012


0

Python 2.6에서는 모듈의 위치가 다릅니다. 이것을 사용하십시오 :

import Image    
from ExifTags import TAGS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.