我正在创建一个脚本,其中脚本获取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中放置叠加图像,然后修改其透明度?
谢谢。
答案 0 :(得分:0)
您需要为paste()添加第三个参数作为mask
。
我使用了这2张图片:
这是完整的代码:
#!/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')
如果我恢复为原始代码:
background.paste(img, offset)