首页 > 解决方案 > Python3 和 Pillow (PIL) - 在具有透明度的其他图像之上添加图像

问题描述

我正在创建一个脚本,其中脚本获取 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 中修改它的透明度?

谢谢你。

标签: python-3.ximageimage-processingpython-imaging-library

解决方案


您需要为maskpaste ()添加第三个参数。

我使用了这两张图片:

在此处输入图像描述 在此处输入图像描述

这是完整的代码:

#!/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)

在此处输入图像描述


推荐阅读