【发布时间】:2023-01-26 21:24:10
【问题描述】:
我试图解决我在代码中遇到的一个问题,该代码应该从图片上的文本文件中绘制文本。我遇到的问题是程序在第一张图片(2、3、4、5)之后的每张图片中将所有文本相互堆叠。我无法解释是什么问题所以我就留下照片(https://i.stack.imgur.com/nkY2O.png)
#vars
f = open("text.txt","r")
img = Image.open("testpic.jpg")
draw = ImageDraw.Draw(img)
img_center = (215,190)
fnt = ImageFont.truetype('arial.ttf',32)
#code
for i in range(1,6):
img_txt = (f.readline())
draw.text(img_center, img_txt, font=fnt, stroke_fill=(0, 0, 0))
img.save('Image'+str(i)+'.png')
我试图将图像文本更改为 f.readlines() 但问题仍然存在。
问题已经解决了一段时间,但我不知道如何关闭这个问题
【问题讨论】:
-
我看不出问题是什么,或者实际问题是什么。你的意思是因为你把它们都画在同一个地方,所以文本会出现在彼此之上吗?
-
是的,文本相互重叠。但我不希望这种情况发生 我希望文本文件中的每一行都在一个图像中
-
text.txt 文件中有什么?
-
因为你一次又一次地在同一张图片上作画。每个
draw.text都绘制在已经修改过的图像之上。如果您不希望这种情况发生,那么在每次循环中,您都必须重新读取未修改的源图像。并实例化一个新的 ImageDraw。 -
另外,请在打开文件时使用上下文管理器...而不是使用
.readline(),只需迭代打开的文件。
标签: python python-imaging-library