如何删除PNG图片中此前通过Pillow添加的自定义元数据?
PNG自定义文本元数据删除方法
你此前通过PngInfo添加的自定义内容属于PNG格式的tEXt块数据,根据不同删除需求可以参考以下两种操作方案:
场景1:完全删除所有自定义文本元数据
保存图片时不携带任何自定义元数据即可完成全量删除,代码示例如下:
from PIL.PngImagePlugin import PngImageFile # 加载带有自定义元数据的原图片 target_img = PngImageFile("你的原图片路径.png") # 保存时传入pnginfo=None,不携带任何自定义文本元数据 target_img.save("删除元数据后的新图片.png", pnginfo=None) # 验证删除结果 new_img = PngImageFile("删除元数据后的新图片.png") print(new_img.text) # 输出为 {} 即代表所有自定义文本元数据已清除
场景2:仅删除指定的自定义元数据,保留其余元数据
如果需要保留部分已添加的元数据,只删除指定字段,可以参考以下代码:
from PIL.PngImagePlugin import PngImageFile, PngInfo target_img = PngImageFile("你的原图片路径.png") # 获取当前图片已有的所有自定义元数据 exist_meta = target_img.text # 填写需要删除的元数据key列表 delete_keys = ["MyNewString", "MyNewInt"] for key in delete_keys: if key in exist_meta: del exist_meta[key] # 生成新的元数据对象写入保留的内容 new_png_info = PngInfo() for k, v in exist_meta.items(): new_png_info.add_text(k, v) # 保存图片 target_img.save("删除指定元数据后的新图片.png", pnginfo=new_png_info) # 验证结果 new_img = PngImageFile("删除指定元数据后的新图片.png") print(new_img.text)
注意事项
- 操作前建议备份原图片,避免误删需要保留的内容
- 该操作仅修改自定义文本元数据,不会影响图片本身的画质、尺寸等核心属性
内容的提问来源于stack exchange,提问作者Rizkii
相关产品推荐
相关产品推荐

