如何将PIL的ImageDraw对象转换成Image对象

4

我有一张PIL图片:

img=Image.open(...)

我将其转换为ImageDraw以进行书写。
img=ImageDraw.Draw(img)

现在我将文本放入:

img.text((0,0), 'text', (0,0,0))

现在我想把它作为一张图片呈现。

我希望得到这样的效果:

img = Image.fromdraw(img)

我需要的是这种格式的图像,以便进行进一步处理。
我该怎么做呢?
2个回答

8

ImageDraw 在原始图像上进行绘制,因此您应该将图像和 ImageDraw 对象分别存储在不同的变量中。

img = Image.open(...)
draw = ImageDraw.Draw(img)
draw.text((0,0), 'text', (0,0,0))
# img is modified inplace

2
完美。我在60分钟的调试中没有想到这一点。非常感谢! - Carol Eisen

1
你可以尝试这个:

你可以尝试这个:

img = Image.open(...)
draw = ImageDraw.Draw(img) 
draw.text((0,0), 'text', (0,0,0))
img.show()
img.save("ImageDrawn.png")

Draw用于在图像上绘制。当在draw对象中绘制时,它会覆盖img。


谢谢答复。我不需要保存图像,而是将其馈送到仅适用于Image而不是ImageDraw的管道中。因此,我不想将ImageDraw保存到硬盘上,然后再将其读取为Image。那样的I/O使用量太大了,并且使用numpy导出/导入PIL也非常烦人。我确实需要ImageDraw-> Image。 - Carol Eisen
哦,抱歉。我加上了保存部分,因为我在我的电脑上测试并想要检查一下。它是就地完成的,正如上面的答案所指定的那样。 - A.M. Ducu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接