首页 > 解决方案 > 如何将 PIL 图像转换为 JSON 可序列化字符串,反之亦然?

问题描述

我有 PIL Image,我想将其转换为 JSON 可序列化的字符串,然后我想将其转换回 PIL Image 原样。我已经在 StackOverflow 上阅读了数百个问题和答案,但没有人能帮助我做我想做的事。

一些答案说使用tostring()PIL 中的方法,该方法实际上现在已经贬值并且tobytes()现在它返回我不能直接放入 JSON 的字节对象。

然后使用base64.b64encode()其中一些也返回bytes对象并且仍然不兼容 JSON。

请注意,我不希望将字符串直接存储到文件中,我想让它与 JSON 兼容,然后将其转换回 PIL Image 原样。

是的,我不想用Image.save()

标签: jsonpython-3.xpython-imaging-library

解决方案


您可以简单地decodeb64encoded 字节对象转换为字符串,即

>>> image = b"1234567890"
>>> base64.b64encode(image)
b'MTIzNDU2Nzg5MA=='    # bytes
>>> base64.b64encode(image).decode()
'MTIzNDU2Nzg5MA=='     # string

作为旁注,您还可以使用它b85encode来节省空间。


推荐阅读