代码:
#!/usr/bin/python3
from PIL import Image, ExifTags
img = Image.open("/root/Bilder/sysPics/schwarz-weiß-Karte.jpg")
for i, j in img._getexif().items():
if i in ExifTags.TAGS:
print(ExifTags.TAGS[i] + " - " + str(j))
错误:
^{pr2}$有人能帮我吗?我从没用过PIL lib,但我看过一个教程,
其中.items()
方法起作用:
https://www.youtube.com/watch?v=-PiR5SX4Mxo&list=PLNmsVeXQZj7onbtIXvxZTzeKGnzI6NFp_&index=8
他的代码和我的代码没有区别,我不敢相信他们在最后的补丁中切断了.items()
方法。在
首先,您不应该依赖于内部函数,如} )。在
_get_exif()
,因为它们的实现随时可能更改,而且它们通常不用于公共用途。(请参见PEP8命名约定中的^{第二,你应该考虑到并不是所有的图像都有EXIF数据。尝试获取EXIF数据可能会}。您的代码不能处理这种情况,您总是假定
None
。所以问题不是.items()
方法,而是你的_get_exif()
返回了{_get_exif()
返回dict
。在现在,为了解决您的问题,对于Python3.x(我有Python3.6.8)和PIL(作为枕头安装,
Pillow==6.0.0
),现在,Image
对象提供了一个可以使用的公共getexif()
方法。如果图像没有EXIF数据或<class 'PIL.Image.Exif'>
,则返回类型为None
。在相关问题 更多 >
编程相关推荐