2011-01-21 105 views
68

我正在使用PIL。如何将EXIF数据转换为字典?在Python中,如何读取图像的exif数据?

+0

更近期的问题在这里:http://stackoverflow.com/questions/14009148/exif-reading-library – 2013-04-24 12:58:59

+1

请参阅这里的答案:http://stackoverflow.com/questions/765396/exif-manipulation-library-for-python – 2011-01-22 00:05:19

+0

http://tilloy.net/dev/pyexiv2/tutorial.html这是最简单和最全面的。 – 2012-11-17 19:10:49

回答

108

试试这个:

import PIL.Image 
img = PIL.Image.open('img.jpg') 
exif_data = img._getexif() 

这应该给你通过EXIF数字标签索引的字典。如果您想通过实际的EXIF标签名称字符串索引的字典中,你可以试试:

import PIL.ExifTags 
exif = { 
    PIL.ExifTags.TAGS[k]: v 
    for k, v in img._getexif().items() 
    if k in PIL.ExifTags.TAGS 
} 
+5

任何Python 3的替代? – 2013-08-30 04:57:31

20

您也可以使用ExifRead模块:

import exifread 
# Open image file for reading (binary mode) 
f = open(path_name, 'rb') 

# Return Exif tags 
tags = exifread.process_file(f) 
11

我用这个:

import os,sys 
from PIL import Image 
from PIL.ExifTags import TAGS 

for (k,v) in Image.open(sys.argv[1])._getexif().iteritems(): 
     print '%s = %s' % (TAGS.get(k), v) 

或获取特定字段:

def get_field (exif,field) : 
    for (k,v) in exif.iteritems(): 
    if TAGS.get(k) == field: 
     return v 

exif = image._getexif() 
print get_field(exif,'ExposureTime')