PIL:在图像上绘制透明文本

时间:2017-11-05 16:03:41

标签: 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 should be 5% alpha", fill=(0, 0, 0, 15), font=font)
image.save("foo.gif")

结果:

Sponge Bob not happy

我错过了什么?

1 个答案:

答案 0 :(得分:3)

这对你有用。

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")

编辑:枕头文档http://pillow.readthedocs.io/en/4.2.x/reference/ImageDraw.html#example-draw-partial-opacity-text

中的参考示例