首页 > 解决方案 > 尝试获取图像的 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 标签呢?我做错了吗?拜托,我太无知了。这是一个非常奇怪的错误。

标签: pythonpython-3.ximageexifpiexif

解决方案


Pillow 仅将exif密钥添加到Image.infoEXIF 数据是否存在。因此,如果图像没有 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")将返回一个值,而将抛出一个.Nonemydict["key"]KeyError


推荐阅读