You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python PIL将图片粘贴到另一图底部并保留透明像素与圆角

用Python Pillow实现渐变图与背景图的复合(保留透明和圆角)

核心思路

要实现需求,关键是利用背景图的Alpha通道作为蒙版,确保渐变只在背景图的非透明区域显示,同时通过alpha_composite或带蒙版的paste来保留原背景的透明和圆角。

具体实现代码

from PIL import Image

# 1. 加载图片(替换为你的本地文件路径)
bg_img = Image.open("bg.png").convert("RGBA")
gradient_img = Image.open("gradient.png").convert("RGBA")

# 2. 调整渐变图尺寸:宽度匹配背景图,高度保持原渐变图高度
bg_w, bg_h = bg_img.size
grad_w, grad_h = gradient_img.size
gradient_img = gradient_img.resize((bg_w, grad_h), Image.Resampling.LANCZOS)

# 3. 创建与背景图尺寸一致的渐变画布,将渐变图粘贴到底部
grad_canvas = Image.new("RGBA", bg_img.size, (0, 0, 0, 0))
paste_y = bg_h - grad_h  # 计算底部粘贴的Y坐标
grad_canvas.paste(gradient_img, (0, paste_y))

# 4. 提取背景图的Alpha通道作为蒙版
bg_alpha = bg_img.split()[3]

# 5. 将渐变画布与背景图复合(两种方式二选一)
# 方式一:使用alpha_composite(简洁高效)
result = Image.alpha_composite(bg_img, grad_canvas)

# 方式二:使用paste结合蒙版(效果一致)
# result = bg_img.copy()
# result.paste(grad_canvas, mask=bg_alpha)

# 6. 保存结果
result.save("final_result.png")

关键细节说明

  • RGBA模式转换:必须确保两张图都转为RGBA格式,才能正常处理透明通道;
  • 渐变尺寸适配:将渐变图宽度缩放到与背景图一致,保证底部完全贴合;
  • Alpha蒙版作用:背景图的Alpha通道记录了圆角和透明区域的信息,用它作为蒙版粘贴渐变,能让渐变只显示在背景有内容的区域;
  • 两种复合方式:alpha_composite会自动处理透明叠加逻辑,带mask参数的paste则是手动指定蒙版范围,二者最终效果一致。

内容的提问来源于stack exchange,提问作者kursatba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:42:38