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

使用Python从黑白图片提取黑色区域制作水印

实现黑白图片黑色区域水印叠加(支持任意位置)

核心思路

利用Pillow的RGBA通道特性,将水印图中的白色背景转为完全透明,只保留黑色区域作为水印,再将其粘贴到目标图片的指定位置。

完整代码

from PIL import Image

# 加载图片
watermark_img = Image.open("Z9yFZ.jpg").convert("RGBA")  # 转为RGBA模式以支持透明通道
target_img = Image.open("Uh4LU.jpg").convert("RGBA")

# 获取水印图的尺寸
w_width, w_height = watermark_img.size

# 处理水印:将白色背景转为透明
processed_watermark = Image.new("RGBA", watermark_img.size, (255, 255, 255, 0))
for x in range(w_width):
    for y in range(w_height):
        r, g, b, a = watermark_img.getpixel((x, y))
        # 判断是否为白色(可根据实际水印图调整阈值)
        if r > 240 and g > 240 and b > 240:
            # 白色背景设为完全透明
            processed_watermark.putpixel((x, y), (r, g, b, 0))
        else:
            # 黑色区域保留不透明状态
            processed_watermark.putpixel((x, y), (0, 0, 0, 255))

# 指定水印位置:示例为右下角,距离边缘50像素
# 修改x、y值即可调整到任意位置
position_x = target_img.width - w_width - 50
position_y = target_img.height - w_height - 50

# 将水印粘贴到目标图,用水印自身的alpha通道做遮罩
target_img.paste(processed_watermark, (position_x, position_y), processed_watermark)

# 保存结果:JPG需转RGB模式,PNG可直接保存RGBA
target_img.convert("RGB").save("watermarked_result.jpg")

关键说明

  • 透明处理:通过RGB阈值判断白色区域,将对应像素的alpha通道设为0,实现背景透明;阈值可根据你的水印图实际情况微调。
  • 任意位置调整:修改position_x和position_y即可改变水印位置,比如左上角设为(50, 50),居中则计算为(target_img.width//2 - w_width//2, target_img.height//2 - w_height//2)。
  • 格式兼容:JPG不支持透明通道,保存前需转RGB;若需保留透明效果,可直接保存为PNG格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:51:33