【发布时间】:2020-02-12 09:27:45
【问题描述】:
我想在 Python 中打开一个 PNG 图像,向其中添加一些自定义数据,保存图像文件,稍后再次打开它以检索数据。我正在使用 Python 3.7。我更喜欢使用 PNG 图像格式,但如果没有其他选择,我可以改用另一种格式。
在更新 PNG 标准以允许在其中存储自定义数据之前,我已经阅读了许多过时的答案和文章。我想要今天(2019 年 10 月)可用的答案,或者如果启用了一些有用的功能,我当然会在未来接受更新的答案。真的很难搜索这种特定的问题,因为“save”、“png”、“python”、“info”都是非常通用的术语。
我可以使用 Pillow(目前为 6.2.0)检索一些数据。我无法解决的是如何将 exif 数据以外的数据存储到 png 中。
from PIL import image
targetImage = Image.open("pathToImage.png")
targetImage.info["MyNewString"] = "A string"
targetImage.info["MyNewInt"] = 1234
targetImage.save("NewPath.png")
当我保存时,上面的信息会丢失。我已经看到了一些使用 targetImage.save("NewPath.png", exif=exif_bytes) 的文档,但这仅适用于 exif 格式的数据。我查看了piexif 和piexif2 包,但它们要么只支持JPEG,要么不允许自定义数据。
我不介意信息是否存储为 PNG 中的 iTXt、tEXt 或 zTXt 块。有关格式的说明,请参阅https://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_PNG_files。
我对 Python 还是很陌生,所以如果我遗漏了文档中一些更熟练的编码人员会识别的明显内容,我深表歉意。如果解决方案已经存在,我真的不想重新发明轮子。
【问题讨论】: