Python PIL:在图像顶部绘制透明文本

Python PIL:在图像顶部绘制透明文本,python,pillow,Python,Pillow,在我的一个项目中,我试图在一些文本上创建一个大纲。总体思路是将黑色文本与原始白色文本略微透明地偏移 由于某些原因,我得到了黑色的文字,但在透明的虚空。以下是MCVE: image = Image.open("spongebob.gif").convert("RGBA") draw = ImageDraw.Draw(image, "RGBA") font = ImageFont.truetype("impact.ttf", 25) draw.text((0, 0), "This text sho

在我的一个项目中,我试图在一些文本上创建一个大纲。总体思路是将黑色文本与原始白色文本略微透明地偏移

由于某些原因,我得到了黑色的文字,但在透明的虚空。以下是MCVE:

image = Image.open("spongebob.gif").convert("RGBA")

draw = ImageDraw.Draw(image, "RGBA")
font = ImageFont.truetype("impact.ttf", 25)
draw.text((0, 0), "This text should be 5% alpha", fill=(0, 0, 0, 15), font=font)
image.save("foo.gif")
结果是:


我错过了什么?

这应该适合你

from PIL import Image, ImageDraw, ImageFont

image = Image.open("spongebob.gif").convert("RGBA")
txt = Image.new('RGBA', image.size, (255,255,255,0))

font = ImageFont.truetype("impact.ttf", 25)
d = ImageDraw.Draw(txt)    

d.text((0, 0), "This text should be 5% alpha", fill=(0, 0, 0, 15), font=font)
combined = Image.alpha_composite(image, txt)    

combined.save("foo.gif")

编辑:枕头文档中的参考示例

我也解决了我的问题。你知道为什么会这样吗?为什么直接在图像上绘制文本不起作用?@FunkySayu我不知道为什么会这样,从来没有研究过。我总是把它当作一个典型的图像编辑器(如Paint.NET)中的图层来处理,如果你想调整某个元素的不透明度,你可以把它放在它自己的图层上,然后向下合并得到你的最终产品。我无法理解为什么它在matplotlib中的行为不像
alpha