2017-07-30 69 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")