2013-06-26 51 views
1

我正在嘗試打印圖像的EXIF。 這是我的代碼:正在讀取EXIF給出錯誤

with Image(filename="/home/hapoofesgeli/Desktop/b.jpg") as image: 
    for k, v in image.metadata.items(): 
     if k.startswith('exif:'): 
      print(k, v) 

但它給出了一個錯誤:

Traceback (most recent call last): 
    File "/home/hapoofesgeli/Programming/Test/Test.py", line 5, in <module> 
    for k, v in image.metadata.items(): 
    File "/usr/lib/python3.3/collections/abc.py", line 480, in __iter__ 
    yield (key, self._mapping[key]) 
    File "/usr/lib/python3.3/site-packages/wand/image.py", line 2260, in __getitem__ 
    raise TypeError('k must be a string, not ' + repr(format)) 
TypeError: k must be a string, not <built-in function format> 

如何解決這個問題?

+0

這似乎是一個錯誤,並固定在主:https://開頭github.com/dahlia/wand/commit/11235ee204a48e060498e63a9171c55c1ba808d4 – minhee

+0

所以這是一個錯誤...謝謝。 – user2524343

+0

對不起,我應該如何使用固定版本?我用新的替換了舊的image.py和tests/image_test.py,並使用python setup.py install進行安裝。但現在我得到這個錯誤:ImportError:無法導入名稱encode_filename – user2524343

回答

0

你應該使用的是_getexif()方法捆綁在PIL的圖片模塊:

>>> image = Image.open(os.getcwd() + '/canon-ixus.jpg') 
>>> image._getexif() 
{36864: '0210', 37121: '\x01\x02\x03\x00', .... } 

,或者也image.info['exif']

>>> image.info['exif'][0:20] 
'Exif\x00\x00II*\x00\x08\x00\x00\x00\t\x00\x0f\x01\x02\x00' 
+0

另外,我從來沒有見過'image.metadata'被其他任何地方使用過(但我可能是錯的,我希望)試圖在一堆圖像上,他們似乎都錯過了,無論我嘗試什麼 –

+0

我使用的是Python 3,所以沒有PIL。 而且我已經根據此頁面編寫了該代碼: https://wand.readthedocs.org/en/0.3-maintenance/whatsnew/0.3.html Exif部分。 – user2524343

+0

你仍然可以使用枕頭,友好的PIL叉:https://pypi.python.org/pypi/Pillow/ –