gpt4 book ai didi

python - 如何在 Python 中将自定义信息保存到 PNG 图像文件?

转载 作者:行者123 更新时间:2023-12-02 03:45:35 31 4
gpt4 key购买 nike

我想在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,要么不允许自定义数据。

我不介意信息是否以 iTXt、tEXt 或 zTXt block 的形式存储在 PNG 中。请参阅https://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_PNG_files有关格式的解释。

<小时/>

我对 Python 还很陌生,所以如果我错过了文档中一些经验丰富的编码人员会识别的明显内容,我深表歉意。如果解决方案已经存在,我真的不想重新发明轮子。

最佳答案

您可以使用 PngImagePlugin.PngInfo 将元数据存储在 Pillow 中像这样:

from PIL import Image
from PIL.PngImagePlugin import PngInfo

targetImage = Image.open("pathToImage.png")

metadata = PngInfo()
metadata.add_text("MyNewString", "A string")
metadata.add_text("MyNewInt", str(1234))

targetImage.save("NewPath.png", pnginfo=metadata)
targetImage = Image.open("NewPath.png")

print(targetImage.text)

>>> {'MyNewString': 'A string', 'MyNewInt': '1234'}

在此示例中,我使用 tEXt,但您也可以使用 add_itxt 将其保存为 iTXt .

关于python - 如何在 Python 中将自定义信息保存到 PNG 图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58399070/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com