Python PIL剪切单词,使其成为透明的PNG

Python PIL剪切单词,使其成为透明的PNG,python,image,python-imaging-library,transparent,Python,Image,Python Imaging Library,Transparent,我想知道python pil是否可以剪切文本并使图片透明。下面是一个更好地解释它的例子。图1.png是一个圆 图2.png是text.png,它只是表示感谢。我想做的是把图片2放到图片1中,然后剪掉它,使它变得透明。所以它应该看起来像这个picture3.png 这是我到目前为止,但它只是粘贴图像。我是PIl的新手。我不知道如何告诉python我想要这样的剪裁 img = Image.open('picture1.png').convert("RGBA") bg_w, bg_h = img.

我想知道python pil是否可以剪切文本并使图片透明。下面是一个更好地解释它的例子。图1.png是一个圆

图2.png是text.png,它只是表示感谢。我想做的是把图片2放到图片1中,然后剪掉它,使它变得透明。所以它应该看起来像这个picture3.png

这是我到目前为止,但它只是粘贴图像。我是PIl的新手。我不知道如何告诉python我想要这样的剪裁

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

我想出来了。答案如下:

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

原则上,这当然是可能的。你试过什么?你在哪里卡住了?你无法管理的具体部分是什么?你所有的图像(和文本图像)都是黑白的吗?拿这些字母,把所有的东西都设置成完全透明的白色,粘贴到另一张图像上,调整字母像素的alpha通道所有的字母像素都是黑白的[调整字母像素的alpha通道]你怎么做?@benolsen我的观点是你的问题对细节要求很低,显示您没有努力(甚至部分)解决问题,可能会得到非常糟糕的答案,或者您不理解的答案(如max的),或者更可能的是,根本没有答案在您提供的图像中,文本“谢谢”比圆圈大。在这段代码中,您似乎没有纠正这一点。那么,如何在圆圈内使用“谢谢”这个词呢?我还看到您使用了白色的精确值(255255,0),但在您提供的png文件中,像素并非完全是黑白的,例如(0,1,1,51)。