PIL中的透明PNG变得不透明了

32 投票
1 回答
23641 浏览
提问于 2025-04-17 02:49

我最近一直在为这个问题烦恼,希望能有人帮帮我。

我在用PIL这个库打开一个透明背景的PNG图片,上面有一些随意的黑色涂鸦,然后想把它放到另一个没有透明背景的PNG上,最后保存成第三个文件。

结果出来的图片全是黑色,这让我很烦,因为我并没有要求它变成黑色。

我试过很多其他帖子里提到的解决办法。图片是以RGBA格式打开的,但还是出现问题。

而且,这个程序本来是要处理各种文件格式的,所以我才用PIL。讽刺的是,我尝试的第一个格式就出问题了。

任何帮助都会很感激。以下是代码:

from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests
img.save(outfile)

1 个回答

55

我觉得你想用的是粘贴遮罩这个参数。可以查看一下文档,往下滚动到paste那部分。

from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff), mask=layer) 
# the transparancy layer will be used as the mask
img.save(outfile)

撰写回答