Python中如何避免在同一张图片上重复写入文本?
解决图片文字叠加问题
问题根源在于你始终在同一个I1图片对象上执行文字写入操作,循环中的每一次修改都会直接累积到这个对象上,导致后续生成的图片都是在之前修改的基础上叠加内容。
解决思路很简单:每次循环时基于原始图片创建一个全新的副本,在副本上进行文字写入,这样每次处理都是从干净的原图开始。
修改后的代码示例:
counter = 0 # 预先加载原始图片,仅执行一次 original_image = Image.open("你的原始图片路径.png") for a, b, c, d, e in data_cap: # 每次循环创建原始图片的副本,避免修改原对象 I1 = original_image.copy() # 在副本上写入文字 I1.text((269, 45), f"{a}", font=myFont, fill=(255, 255, 255)) I1.text((524, 45), f"{b}", font=myFont, fill=(255, 255, 255)) I1.text((390.5, 121.5), f"{c}", font=myFontSmall, fill=(255, 255, 255)) I1.text((500.9, 121.5), f"{d}", font=myFontSmall, fill=(255, 255, 255)) I1.text((610.5, 121.5), f"{e}", font=myFontSmall, fill=(255, 255, 255)) counter += 1 # 保存修改后的副本 I1.save(f"car{counter}.png")
关键说明:
- 提前加载原始图片,避免在循环内重复打开文件,提升执行效率
- 用
copy()方法创建独立副本,所有修改都只作用于当前循环的副本,原始图片始终保持初始状态 - 注意保存的是当前循环修改后的
I1对象,而非原始图片
内容的提问来源于stack exchange,提问作者GohanHango
相关产品推荐
相关产品推荐

