在Python中使用ImageDraw.Draw(图像)循环会导致覆盖文本
执行以下代码时,第一个输出文件工作正常,但第二个输出文件从列表中的第一项和第二项中提取文本。每次迭代文本都会继续累积。但是,文件名很好,不会累积在Python中使用ImageDraw.Draw(图像)循环会导致覆盖文本,python,pillow,Python,Pillow,执行以下代码时,第一个输出文件工作正常,但第二个输出文件从列表中的第一项和第二项中提取文本。每次迭代文本都会继续累积。但是,文件名很好,不会累积 def write_text_to_image(names_list): from PIL import Image, ImageDraw, ImageFont image = Image.open("t.bmp") draw = ImageDraw.Draw(image) font = ImageFont.truet
def write_text_to_image(names_list):
from PIL import Image, ImageDraw, ImageFont
image = Image.open("t.bmp")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('arial.ttf', 132)
for name in names_list:
draw.text((150, 905), name, font = font, fill = (0, 0, 0))
image.save(name + ".bmp")
我没有试过,但看着你的代码,我认为必须在每次交互中重新创建对象
draw
:
for name in names_list:
draw = ImageDraw.Draw(image)
...
这应该可以解决问题。我自己回答了这个问题,法比奥的想法帮助了我。我必须在for循环中移动图像分配
def write_text_to_image(names_list):
from PIL import Image, ImageDraw, ImageFont
font = ImageFont.truetype('arial.ttf', 132)
for name in names_list:
image = Image.open("t.bmp")
draw = ImageDraw.Draw(image)
draw.text((150, 905), name, font = font, fill = (0, 0, 0))
image.save(name + ".bmp")
谢谢你的回复。不幸的是,我将代码行移到了循环中,它仍然在做同样的事情。