python-3.x - 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 中修改它的透明度?
谢谢你。
解决方案
您需要为mask
paste ()添加第三个参数。
我使用了这两张图片:
这是完整的代码:
#!/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)
推荐阅读
- r - 有没有办法使用原始级别位置重新调整变量?
- mysql - MySQL:使用 if else 更新多个列
- spring - 强调spring boot服务时消耗的GCP Postgres连接(使用SQL Cloud代理)
- github - 将文件夹推送到 github
- c# - 如何判断 .Net 格式字符串是否有效?
- c - 使用指针且无循环的选择排序
- python - NBA API:循环字典以获取数据帧
- javascript - 使用 Map 在 React 中渲染图像
- android - 令牌 android.os.BinderProxy@be12cf1 的应用程序有太多的 windows 20
- php - 如何从 db php 显示和分解多个图像?