54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
"""
|
||
清空默认头像图片中的嵌入JSON数据
|
||
"""
|
||
from PIL import Image
|
||
import io
|
||
|
||
def clear_png_text_data(png_path):
|
||
"""
|
||
清空PNG文件中的tEXt文本数据(包括嵌入的JSON)
|
||
|
||
Args:
|
||
png_path: PNG文件路径
|
||
"""
|
||
try:
|
||
# 打开图片
|
||
img = Image.open(png_path)
|
||
|
||
print(f"原始PNG文本数据键: {list(img.text.keys()) if img.text else '无'}")
|
||
|
||
# 创建一个新的图片对象,复制像素数据但不复制文本数据
|
||
if img.mode == 'RGBA':
|
||
new_img = Image.new('RGBA', img.size)
|
||
else:
|
||
new_img = Image.new('RGB', img.size)
|
||
|
||
# 复制像素数据
|
||
new_img.paste(img)
|
||
|
||
# 确保新图片没有文本数据
|
||
new_img.text = {}
|
||
|
||
# 保存回原文件
|
||
buffer = io.BytesIO()
|
||
new_img.save(buffer, format='PNG')
|
||
buffer.seek(0)
|
||
|
||
with open(png_path, 'wb') as f:
|
||
f.write(buffer.read())
|
||
|
||
# 验证是否已清空
|
||
verify_img = Image.open(png_path)
|
||
print(f"清空后PNG文本数据键: {list(verify_img.text.keys()) if verify_img.text else '无'}")
|
||
print(f"✓ 成功清空 {png_path} 中的JSON数据")
|
||
|
||
except Exception as e:
|
||
print(f"✗ 处理失败: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
|
||
if __name__ == '__main__':
|
||
png_file = 'data/characters/defult.png'
|
||
print(f"正在处理: {png_file}")
|
||
clear_png_text_data(png_file)
|