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

塔夫

我想在Python中打开一个PNG图像,向其中添加一些自定义数据,保存该图像文件,然后稍后再次将其打开以检索数据。我正在使用Python 3.7。我宁愿使用PNG图像格式,但如果没有其他选择的话,可以移至其他格式。

在更新PNG标准以允许将自定义数据存储在其中之前,我已经阅读了许多过时的答案和文章。我想就今天(2019年10月)提供的答案,或者,如果启用了一些有用的功能,当然将来会接受更新的答案。确实很难搜索此类特定问题,因为“保存”,“ png”,“ python”,“信息”都是非常通用的术语。


我可以使用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格式的数据。我查看了piexifpiexif2软件包,但它们要么仅支持JPEG,要么不允许自定义数据。

我不介意信息是否以iTXt,tEXt或zTXt块存储在PNG中。有关格式的说明,请参见https://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_PNG_files


我对Python还是很陌生,所以如果我错过了文档中一些明显的东西,而实践者会认识到这一点,我深表歉意。如果解决方案已经存在,我真的不想重新发明轮子。

乔纳森·费恩斯特拉

您可以使用PngImageFilePngInfo从这样的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'}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

将自定义对象保存到NSUserDefaults中

来自分类Dev

如何将自定义变量保存到给定文件?

来自分类Dev

在JMeter的“将响应保存到文件”中,如何在将自定义后缀附加到文件名末尾的同时增加文件名

来自分类Dev

从Java Servlet将画布图像保存到png图像文件中

来自分类Dev

如何在Swift中归档和取消归档自定义对象?或者如何在Swift中将自定义对象保存到NSUserDefaults?

来自分类Dev

如何将图像保存到文件android自定义视图?

来自分类Dev

如何将图像保存到自定义相册?

来自分类Dev

在django中将自定义字段类保存到哪里?

来自分类Dev

如何在Odoo 8中将自定义纸张格式链接到pdf报告?

来自分类Dev

PHP Imagick:如何将自定义图像属性保存到文件

来自分类Dev

为什么我的图像/视频元数据被删除?如何在文件中保存自定义信息?

来自分类Dev

如何在Sitecore中将自定义配置文件分配给自定义域用户

来自分类Dev

如何在Python 3.5中将自定义代码添加到HTTPStatus?

来自分类Dev

如何在Laravel 5中将自定义字体放在哪里?

来自分类Dev

如何将自定义类型保存到QSettings?

来自分类Dev

如何在Python中将自定义类对象转换为元组?

来自分类Dev

如何在Laravel 5中将自定义配置文件添加到app / config?

来自分类Dev

如何在Flutter中将自定义小部件项目填充到ListView中?

来自分类Dev

如何在SVG标签中自定义PNG图像?

来自分类Dev

如何在swiftui中将自定义图像作为navigationBarItem插入

来自分类Dev

在django中将自定义字段类保存到哪里?

来自分类Dev

如何使用ffmpeg将自定义数据保存到电影文件的标头中?

来自分类Dev

为什么我的图像/视频元数据被删除?如何在文件中保存自定义信息?

来自分类Dev

如何在Woocommerce中将自定义字段添加到类别中?

来自分类Dev

如何在Java中将自定义颜色添加到数组中?

来自分类Dev

如何在Umbraco 7.5.8中将自定义模型发布到控制器?

来自分类Dev

在iOS Swift 3中将openGL ES绘图保存到PNG图像文件

来自分类Dev

无法在 Swift 4 中将自定义对象数组保存到 UserDefault

来自分类Dev

如何将自定义数据保存到文本文件?

Related 相关文章

  1. 1

    将自定义对象保存到NSUserDefaults中

  2. 2

    如何将自定义变量保存到给定文件?

  3. 3

    在JMeter的“将响应保存到文件”中,如何在将自定义后缀附加到文件名末尾的同时增加文件名

  4. 4

    从Java Servlet将画布图像保存到png图像文件中

  5. 5

    如何在Swift中归档和取消归档自定义对象?或者如何在Swift中将自定义对象保存到NSUserDefaults?

  6. 6

    如何将图像保存到文件android自定义视图?

  7. 7

    如何将图像保存到自定义相册?

  8. 8

    在django中将自定义字段类保存到哪里?

  9. 9

    如何在Odoo 8中将自定义纸张格式链接到pdf报告?

  10. 10

    PHP Imagick:如何将自定义图像属性保存到文件

  11. 11

    为什么我的图像/视频元数据被删除?如何在文件中保存自定义信息?

  12. 12

    如何在Sitecore中将自定义配置文件分配给自定义域用户

  13. 13

    如何在Python 3.5中将自定义代码添加到HTTPStatus?

  14. 14

    如何在Laravel 5中将自定义字体放在哪里?

  15. 15

    如何将自定义类型保存到QSettings?

  16. 16

    如何在Python中将自定义类对象转换为元组?

  17. 17

    如何在Laravel 5中将自定义配置文件添加到app / config?

  18. 18

    如何在Flutter中将自定义小部件项目填充到ListView中?

  19. 19

    如何在SVG标签中自定义PNG图像?

  20. 20

    如何在swiftui中将自定义图像作为navigationBarItem插入

  21. 21

    在django中将自定义字段类保存到哪里?

  22. 22

    如何使用ffmpeg将自定义数据保存到电影文件的标头中?

  23. 23

    为什么我的图像/视频元数据被删除?如何在文件中保存自定义信息?

  24. 24

    如何在Woocommerce中将自定义字段添加到类别中?

  25. 25

    如何在Java中将自定义颜色添加到数组中?

  26. 26

    如何在Umbraco 7.5.8中将自定义模型发布到控制器?

  27. 27

    在iOS Swift 3中将openGL ES绘图保存到PNG图像文件

  28. 28

    无法在 Swift 4 中将自定义对象数组保存到 UserDefault

  29. 29

    如何将自定义数据保存到文本文件?

热门标签

归档