2017-07-30 72 views
1

我想知道它是否可能用python pil剪出文本并使图片透明。这是一个更好解释的例子。图片1.png是一个圆圈。 Picture 1.pngPython PIL剪出单词使其变得透明PNG

图片2.png是text.png,只是说谢谢。我想要做的是将picture2放入picture1中,并将其剪切掉以便透明。所以它应该是这样的picture3.png

Picture2 Picture3

这是我迄今为止,但只粘贴图像。我是PIl的新手。我不知道如何告诉蟒蛇我想这样切出来。

img = Image.open('picture1.png').convert("RGBA") 
bg_w, bg_h = img.size 
layer = Image.open('picture2.png').convert("RGBA") # this file is the transparent one 
img_w, img_h = layer.size 
offset = ((bg_w - img_w)/2, (bg_h - img_h)/3) 
img.paste(layer, offset, mask=layer) 
img.save('Picture3.png') 
+1

原则上,这是可能的。你有什么尝试?你卡在哪里?什么特定的部分不能管理?你所有的图像(和文字图像)都是黑白的吗? –

+0

把字母,白色的一切设置为完全透明,将其粘贴到其他图像,调整字母像素的alpha通道 –

+0

是的,所有的都是黑色和白色 –

回答

2

想通了。这是任何需要帮助的人的答案。毕竟这是这个地方是什么

from PIL import Image, ImageDraw 

img = Image.open('circle.png').convert("RGBA") 
layer = Image.open('Thanks.png').convert("RGBA") # this file is the transparent one 
img.paste(layer, mask=layer) 
img.save('Picture3White.png') 


img = Image.open('Picture3White.png') 
img = img.convert("RGBA") 
datas = img.getdata() 

newData = [] 
for item in datas: 
    if item[0] == 255 and item[1] == 255 and item[2] == 255: 
     newData.append((255, 255, 255, 0)) 
    else: 
     newData.append(item) 

img.putdata(newData) 
img.save("Transparent.png", "PNG")