Taf*_*afT 8 python png exif metadata
我想在 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")
Run Code Online (Sandbox Code Playgroud)
当我保存时,上面的信息会丢失。我看过一些使用文档,targetImage.save("NewPath.png", exif=exif_bytes)但只适用于 exif 格式的数据。我查看了piexif和piexif2包,但它们要么只支持 JPEG,要么不允许自定义数据。
我不介意信息是否以 iTXt、tEXt 或 zTXt 块的形式存储在 PNG 中。有关格式的说明,请参阅https://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_PNG_files。
我对 Python 很陌生,所以如果我遗漏了文档中一些经验丰富的编码人员会识别的明显内容,我深表歉意。如果解决方案已经存在,我真的不想重新发明轮子。
Jon*_*tra 13
您可以使用PngImageFile和PngInfo从PngImagePlugin模块将元数据存储在 Pillow 中,如下所示:
from PIL.PngImagePlugin import PngImageFile, PngInfo
targetImage = PngImageFile("pathToImage.png")
metadata = PngInfo()
metadata.add_text("MyNewString", "A string")
metadata.add_text("MyNewInt", str(1234))
targetImage.save("NewPath.png", pnginfo=metadata)
targetImage = PngImageFile("NewPath.png")
print(targetImage.text)
>>> {'MyNewString': 'A string', 'MyNewInt': '1234'}
Run Code Online (Sandbox Code Playgroud)
在本例中,我使用 tEXt,但您也可以使用 .tEXt 将其另存为 iTXt add_itxt。
| 归档时间: |
|
| 查看次数: |
4294 次 |
| 最近记录: |