做项目遇到需要把一些文本信息整合到图片中,方便文本与图片的对应,查了一圈,找到这位老哥的代码:https://blog.youkuaiyun.com/cfh0081/article/details/80996916 测试了下发现有点bug,于是参照他的代码,重新写了一份。两个函数分别实现向png文件插入文本信息,以及读取已插入的文本信息。需要通过pip先安装pypng这个模块才能正常运行以下代码。更多png图片格式结构相关内容请见那位老哥的文章,我不再重复讲述。
import png
def insert_text_chunk(src_png, dst_png, text):
'''在png中的第二个chunk插入自定义内容'''
reader = png.Reader(filename=src_png)
chunks = reader.chunks()#创建一个每次返回一个chunk的生成器
chunk_list = list(chunks)#把生成器的所有元素变成list
print(f"target png total chunks number is {len(chunk_list)}")
chunk_item = tuple([b'tEXt', text])
#第一个chunk是固定的IHDR,我们把tEXt放在第2个chunk
index = 1
chunk_list.insert(index, chunk_item)
with open(dst_png, 'wb') as dst_file:
png.write_chu