使用Python + PIL或Imagemagick创建文本掩码

时间:2013-08-08 13:45:09

标签: python image text imagemagick python-imaging-library

我需要以编程方式在纯色上创建文本蒙版,文本是透明的。

例如

cut

可以使用Imagemagick或Python成像库吗?

这适用于我想要的反转,因此透明背景上的纯文本。

convert -size 720x405 xc:transparent -fill pink -gravity center -pointsize 150 -font font.ttf -draw "text 0,0 CUT" output.png

如果可能,我更愿意使用PIL / Pillow。

更新:

这就是我到目前为止......

font = ImageFont.truetype('font.ttf', 200, encoding='unic')
bg = Image.new('RGBA', (720, 404), '#0099ff')
mask = Image.new('1', (720, 404))

draw = ImageDraw.Draw(mask)
draw.text((0, 0), '#HELLO', font=font, fill='#ffffff')

bg.paste('#00000000', (0, 0), text)
bg.save('text.png', 'PNG')

然而,这会引发错误:

ValueError: unknown color specifier: '#00000000'

如果我设置为有效颜色,它按预期工作,所以我知道我很接近,只是不能引用透明度。

更新:

最后,我刚刚创建了另一张空白图像,并使用它而不是定义颜色。所以:

trans = Image.new('RGBA', (720, 404))
bg.paste(trans, (0, 0), mask)

1 个答案:

答案 0 :(得分:3)

这在PIL中比较简单。

这是一个非常好的PIL reference

有很多方法可以做到 - 这是一个:

  1. 在RGBA模式下创建具有所需大小和背景颜色的图像。
  2. 在模式“1”中创建相同大小的空白图像以用作蒙版
  3. 使用ImageDraw模块在掩码图像上写入文本
  4. 使用Image.paste(颜色,方框,蒙版)将颜色(0,0,0,0)粘贴到蒙版中文本的任何位置。