使用python向png文件插入文本信息(add text chunk to png)
工作上需要给已经处理过的png文件加上特殊标识,后续再进行处理的时候,可以直接识别到已经处理过了,避免重复处理,所以想到给png文件添加特定的文本信息做标识,在网上搜索良久,没有找到现成的python代码方案,后来在网上看到一篇文章,详细了解了一下png文件结构,再加上前面了解的python pypng模块,自己摸索实现了该功能,下面直接上代码,有需要的同学可参考一下。
import png
TEXT_CHUNK_FLAG = b'tEXt'
def generate_chunk_tuple(type_flag, content):
return tuple([type_flag, content])
def generate_text_chunk_tuple(str_info):
type_flag = TEXT_CHUNK_FLAG
return generate_chunk_tuple(type_flag, bytes(str_info, 'utf-8'))
def insert_text_chunk(target, text, index=1):
if index < 0:
raise Exception('The index value {} less than 0!'.format(index))
reader = png.Reader(filename=target)
chunks = reader.chunks()
chunk_list = list(chunks)
print(chunk_list[0])
print(chunk_list[1])
print(chunk_list[2])
chunk_item = generate_text_chunk_tuple(text)
chunk_list.insert(index, chunk_item)
with open(target, 'wb') as dst_file:
png.write_chunks(dst_file, chunk_list)
def _insert_text_chunk_to_png_test():
src = r'E:\temp\png\register_05.png'
insert_text_chunk(src, 'just for test!')
if __name__ == '__main__':
_insert_text_chunk_to_png_test()