2012-12-23 52 views
7

在Python 3.x中是否有exif庫?似乎我遇到的每個exif庫都僅適用於Python 2.x。我不需要太花哨。只要閱讀這些值就足夠了。Exif閱讀庫

+1

這是一種欺騙,但我們稱之爲[Phil Harvey的exiftool](http://www.sno.phy。 queensu.ca/~phil/exiftool/),使用子進程和'-json -fast - @ argfile'選項。它非常簡單和完整,當你需要批量處理成千上萬的圖像時(如我們所做的那樣),它非常快速。 –

回答

14

選項1.使用pyexiv2。請參閱:pyexiv2 Bug #824440: Python 3 support您需要py3k的boost-python,並且還需要手動應用上面的bug末尾發佈的補丁,但除此之外它的工作原理。最新的Ubuntu可能最容易啓動和運行。

選項2.使用PIL下行:此分支/分叉似乎並未積極開發。

from PIL import Image 
from PIL.ExifTags import TAGS 

image = Image.open("test.jpg") 
exif = image._getexif() 
# decode exif using TAGS 

選項3.使用PythonMagick

from PythonMagick import Image 

img = Image("image.jpg") 
print img.attribute("EXIF:Orientation") 

參見:Exif manipulation library for python

+0

啊。沒有意識到PIL有一個Python3分支。我會試一試並回復你。 –

+0

你可以在這個問題上測試這個,下載圖像,並嘗試獲取ImageDescription。 http://stackoverflow.com/questions/22173902/how-to-get-image-title-in-python-django – Clayton

5

作爲參考,pyexiv2 homepage現在有一個棄用警告指向Gexiv2,圍繞libexiv2 GObject的內省基於包裝(同一個庫pyexiv2包裝)專門用於Python 3.x支持的目的。

不幸的是,在寫這篇文章的時候,Gexiv2的安裝仍然很痛苦,至今我一直無法使它在Ubuntu Precise上工作(看起來像libs已過時 - 可能爲我留下了粘性),所以PIL仍然是閱讀Python 3中EXIF標籤的最佳選擇。

+0

你的鏈接到gexiv2似乎是一個死亡。 –

+0

謝謝 - 現在應該修好 –

+0

哇,那太快了! –