Python3和枕头(PIL)-在其他图像之上添加透明图像

时间:2020-06-17 10:43:30

标签: python-3.x image image-processing python-imaging-library

我正在创建一个脚本,其中脚本获取2张图像。第一张图片是背景图片,第二张图片是要显示在第一张图片顶部的重叠图片,但透明度接近90%。

我有以下代码:

from PIL import Image
img = Image.open('C:\\Users\\USER\\Desktop\\web\\2.jpg', 'r')
img_w, img_h = img.size

img.putalpha(200)

background = Image.open('C:\\Users\\USER\\Desktop\\web\\email.jpg', 'r')
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset)
background.save('C:\\Users\\USER\\Desktop\\out.png')

现在,问题是img.putalpha(200)根本不做任何事情,即使它应该可以使我保持图像的透明性。

如何在Python中放置叠加图像,然后修改其透明度?

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要为paste()添加第三个参数作为mask

我使用了这2张图片:

enter image description here enter image description here

这是完整的代码:

#!/usr/bin/env python3

from PIL import Image

# Open overlay image
img = Image.open('good.jpg')
img_w, img_h = img.size

img.putalpha(128)

background = Image.open('paddington.jpg')
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset, img)
background.save('result.png')

enter image description here

如果我恢复为原始代码:

background.paste(img, offset)

enter image description here