如何修复 - 无法编码对象:28.0,类型:<class 'PIL.TiffImagePlugin.IFDRational'>?

How to fix - cannot encode object: 28.0, of type: <class 'PIL.TiffImagePlugin.IFDRational'>?

我正在尝试使用 python3 中的 pillow 从 JPEG 文件序列化 EXIF 元数据。正在使用 my_jpeg_image._getexif() 提取元数据(也许有更好的方法)。

当我尝试序列化*这些数据时,收到错误

cannot encode object: 28.0, of type: <class 'PIL.TiffImagePlugin.IFDRational'>

为什么 TiffImagePlugin class 被 pillow 用于 JPEG 元数据提取?

如何将 IFDRational 转换为可序列化类型,例如float/int 在这种情况下(and/or 通常)?

谢谢!

[*FWIW,进入 mongodb]

要将 IFDRational 对象 obj 转换为 float 类型,您可以这样做

number = obj._numerator / obj._denominator
print(type(number))

现在变成了<class 'float'>

但是,如果分母为0,可能需要异常处理。

IFD理性详情如下:

https://pillow.readthedocs.io/en/stable/_modules/PIL/TiffImagePlugin.html