我正在尝试使用以下代码从手机中以base64字符串的形式提取发送到Google Cloud的图像中的EXIF元数据信息:
imgdata = base64.b64decode(str(base64_string))
image = Image.open(io.BytesIO(imgdata))
for orientation in ExifTags.TAGS.keys() :
if ExifTags.TAGS[orientation]=='Orientation':
break
exif=dict(image._getexif().items())
尽管以上代码似乎适用于IOS,但由于Android照片在最后一行给出AttributeError: 'NoneType' object has no attribute 'items'
而崩溃:
exif=dict(image._getexif().items())
我知道我可以在尝试访问._getexif()
是否为None
之前进行检查,但是您为什么认为此错误正在发生?它与Android如何存储EXIF信息有关吗?任何帮助表示赞赏。
答案 0 :(得分:0)
对于任何可能出于相同原因而苦苦挣扎的人,无论_getexif()
是否具有EXIF信息,我都无法使用Android图像。相反,我们将EXIF信息直接从前端传递给后端。
我还注意到,iPhone拍摄图像的EXIF字典的键'274'
具有方向变量,而Android拍摄图像的EXIF字典的键是'Orientation'
。