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

如何使用Python为透明背景图片的局部添加线性透明渐变

图片底部5%区域添加线性透明渐变实现方案

以下方案均兼容带原有透明通道的非矩形PNG图片,不会破坏原图已有的透明属性。

图形编辑器手动操作(以Photoshop为例)

  • 打开目标图片后,选中需要处理的图层,点击图层面板底部的「添加图层蒙版」按钮,为当前图层创建空白蒙版
  • 选择渐变工具,将渐变类型设置为线性渐变,渐变配色设置为「纯白到纯黑」
  • 按Ctrl+R(Mac为Command+R)调出标尺,右键标尺选择百分比单位,在图片高度95%的位置拖动创建一条参考线
  • 按住Shift保证移动方向垂直,将鼠标从参考线位置(底部5%区域的顶部边界)拖动到图片最底部,松开后渐变自动应用到蒙版
  • 导出时选择PNG格式保留透明通道即可。

代码实现方案

CSS 前端在线实现

无需修改原图,浏览器渲染时自动生成效果,兼容性覆盖绝大多数现代浏览器:

/* 给图片添加该类即可生效 */
.bottom-fade {
  mask-image: linear-gradient(to top, transparent 0%, black 100%);
  mask-size: 100% 5%;
  mask-position: left bottom;
  mask-repeat: no-repeat;
  /* 兼容webkit内核浏览器 */
  -webkit-mask-image: linear-gradient(to top, transparent 0%, black 100%);
  -webkit-mask-size: 100% 5%;
  -webkit-mask-position: left bottom;
  -webkit-mask-repeat: no-repeat;
}

Python Pillow 批量本地处理

适合批量处理本地图片,直接生成带渐变效果的新图片:

from PIL import Image, ImageDraw

def add_bottom_5p_fade(input_path, output_path):
    # 打开原图并保留RGBA通道
    img = Image.open(input_path).convert("RGBA")
    width, height = img.size
    fade_area_height = int(height * 0.05)
    # 创建L模式蒙版,初始全不透明(值为255)
    mask = Image.new("L", (width, height), 255)
    draw = ImageDraw.Draw(mask)
    # 对底部5%区域绘制渐变
    for y in range(fade_area_height):
        current_alpha = int(255 * (1 - y / fade_area_height))
        draw.line(
            [(0, height - fade_area_height + y), (width, height - fade_area_height + y)],
            fill=current_alpha
        )
    # 叠加蒙版到原图alpha通道
    img.putalpha(mask)
    img.save(output_path, format="PNG")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:15:04