python - 尝试获取图像的 EXIF 标签时出错
问题描述
我正在尝试获取 JPG 图像的 EXIF 标签。为此,我正在使用piexif
模块。
问题是我得到一个错误 - KeyError
,说:
Traceback (most recent call last):
File "D:/PythonProjects/IMGDateByNameRecovery/recovery.py", line 98, in selectImages
self.setExifTag(file_str)
File "D:/PythonProjects/IMGDateByNameRecovery/recovery.py", line 102, in setExifTag
exif = piexif.load(img.info["Exif"])
KeyError: 'Exif'
我已经按照文档中的方式做了所有事情,这里有一些问题 StackOverflow 和 pypi 网站。一切都一样。我的代码:
img = Image.open(file)
exif_dict = piexif.load(img.info["exif"])
altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
print(altitude)
那么如何读取图像的 EXIF 标签呢?我做错了吗?拜托,我太无知了。这是一个非常奇怪的错误。
解决方案
Pillow 仅将exif
密钥添加到Image.info
EXIF 数据是否存在。因此,如果图像没有 EXIF 数据,您的脚本将返回错误,因为密钥不存在。
您可以在图像文件格式文档中查看哪些图像格式支持info["exif"]
数据。
你可以做这样的事情......
img = Image.open(file)
exif_dict = img.info.get("exif") # returns None if exif key does not exist
if exif_dict:
exif_data = piexif.load(exif_dict)
altitude = exif_data['GPS'][piexif.GPSIFD.GPSAltitude]
print(altitude)
else:
pass
# Do something else when there is no EXIF data on the image.
如果键不存在,使用mydict.get("key")
将返回一个值,而将抛出一个.None
mydict["key"]
KeyError