尝试获取图像的 EXIF 标签时出错
Error while trying to get the EXIF tags of the image
我正在尝试获取 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'
我已经完成了文档中的所有操作,这里是关于 Whosebug 和 pypi 网站上的一些问题。一切都一样。我的代码:
img = Image.open(file)
exif_dict = piexif.load(img.info["exif"])
altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
print(altitude)
那我该如何读取图片的 EXIF 标签呢?我做错了吗?
拜托,我很无知。这是一个奇怪的错误。
如果 EXIF 数据存在,Pillow 只会将 exif
键添加到 Image.info
。因此,如果图像没有 EXIF 数据,您的脚本将 return 错误,因为密钥不存在。
您可以在Image file formats documentation.
中查看哪些图像格式支持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")
将 return 值为 None
,而 mydict["key"]
将抛出 KeyError
.
假设您在 MakerNotes
中编码了元数据。
确保安装以下依赖项:
- 像素
- 枕头
然后 运行 下面的代码考虑图像是 Image.png
并且在脚本的同一目录中:
from PIL import Image
import piexif
import pickle
img = Image.open('Image.png')
exif_dict = img.info.get("exif") # returns None if exif key does not exist
if exif_dict:
exif_data = piexif.load(exif_dict)
raw = exif_data['Exif'][piexif.ExifIFD.MakerNote]
tags = pickle.loads(raw)
print(tags)
我正在尝试获取 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'
我已经完成了文档中的所有操作,这里是关于 Whosebug 和 pypi 网站上的一些问题。一切都一样。我的代码:
img = Image.open(file)
exif_dict = piexif.load(img.info["exif"])
altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
print(altitude)
那我该如何读取图片的 EXIF 标签呢?我做错了吗? 拜托,我很无知。这是一个奇怪的错误。
如果 EXIF 数据存在,Pillow 只会将 exif
键添加到 Image.info
。因此,如果图像没有 EXIF 数据,您的脚本将 return 错误,因为密钥不存在。
您可以在Image file formats documentation.
中查看哪些图像格式支持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")
将 return 值为 None
,而 mydict["key"]
将抛出 KeyError
.
假设您在 MakerNotes
中编码了元数据。
确保安装以下依赖项:
- 像素
- 枕头
然后 运行 下面的代码考虑图像是 Image.png
并且在脚本的同一目录中:
from PIL import Image
import piexif
import pickle
img = Image.open('Image.png')
exif_dict = img.info.get("exif") # returns None if exif key does not exist
if exif_dict:
exif_data = piexif.load(exif_dict)
raw = exif_data['Exif'][piexif.ExifIFD.MakerNote]
tags = pickle.loads(raw)
print(tags)