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

Python如何基于有序点集生成多边形区域透明图像(PIL实现)

实现思路
  • 核心逻辑是通过alpha通道蒙版控制可见区域:多边形内部区域alpha值设为255(完全不透明,保留原图内容),外部区域alpha值设为0(完全透明)
  • 第一步创建和原图尺寸完全一致的单通道蒙版,初始值全为0(对应全透明)
  • 第二步用PIL的绘图能力在蒙版上填充你提供的有序多边形区域,填充值设为255(对应不透明)
  • 第三步将生成的蒙版作为alpha通道合并到原始图像上,即可得到目标效果
可直接运行的代码示例
from PIL import Image, ImageDraw

# 配置参数,替换为你自己的内容
original_img_path = "你的原始图像路径.jpg"
output_img_path = "输出透明图路径.png"
# 有序多边形坐标点,格式为[(x1,y1), (x2,y2), ..., (xn,yn)]
polygon_points = [(100, 100), (300, 50), (450, 250), (200, 400), (50, 200)]

# 1. 打开原始图像,转为带alpha通道的RGBA模式
img = Image.open(original_img_path).convert("RGBA")
# 2. 创建和原图尺寸一致的单通道灰度蒙版,初始全黑(值为0对应全透明)
mask = Image.new("L", img.size, 0)
# 3. 在蒙版上绘制填充多边形,白色(值为255对应完全不透明)
draw = ImageDraw.Draw(mask)
draw.polygon(polygon_points, fill=255)
# 4. 将蒙版作为alpha通道合并到原图
img.putalpha(mask)
# 5. 保存结果,必须存为支持透明的格式如PNG
img.save(output_img_path)
注意事项
  • PIL的图像坐标系原点在左上角,x轴向右延伸,y轴向下延伸,你提供的多边形坐标需要和该坐标系匹配
  • 如果原始图像本身已有alpha通道,且需要保留原有透明逻辑,可在合并蒙版前,将原alpha通道和新生成的多边形蒙版做按位与操作即可
  • 不要保存为JPG格式,该格式不支持透明通道,会导致透明区域被自动填充为纯色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:06