使用 PIL 在另一个图像之上的图像上写入文本

Posted

技术标签:

【中文标题】使用 PIL 在另一个图像之上的图像上写入文本【英文标题】:Writing a text over an image that is on top of another image using PIL 【发布时间】:2019-01-17 07:58:30 【问题描述】:
from PIL import Image, ImageDraw, ImageFont, ImageOps

命令:

    font1 = ImageFont.truetype('timesbd.ttf',17)

    backgtound = Image.open('plan.png')
    bar = Image.open("bar.png")
    write = ImageDraw.Draw(bar)
    write.text(xy=(73, 181), text=" / 20".format(numbertotal), fill=(255, 255, 255), font=font1)
    background.paste(bar, (2, 173), bar)
    background.save('plan2.png')

我在一个名为“计划”的图像之上有一张名为“条形图”的图片,我正在尝试在图像“条形图”上写一个文本,但文本不在第二个图像的顶部,只有第一个一,谁能帮帮我? (x,y坐标正确)

【问题讨论】:

【参考方案1】:

IIUC,并且您希望文本覆盖图像bar,问题是您在粘贴后编写文本。相反,您可以先在图像bar 上写下您的文字,然后将其粘贴到background

在本例中,plan.png 是狗,bar.png 是猫。可以看到文字在bar之上,而不是plan之上:

font1 = ImageFont.truetype('timesbd.ttf',17)

background = Image.open('plan.png')
bar = Image.open("bar.png")
write = ImageDraw.Draw(bar)
write.text(xy=(79, 181), text="my text", fill=(255, 255, 255), font=font1)
background.paste(bar)
background.save('plan2.png')

【讨论】:

我根据您写的内容编辑了问题,但即使如此,文字也没有留在第二张图片的顶部,为什么?

以上是关于使用 PIL 在另一个图像之上的图像上写入文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 PIL 在图像上添加文本

如何使用 PIL 将 PNG 图像写入字符串?

如何在离子中将图像叠加在另一个图像之上

PIL如何根据图像大小缩放文本大小

如何使用 PIL 将透明 png 图像与另一个图像合并

如何使用 PIL 将透明 png 图像与另一个图像合并