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

使用Pillow粘贴无背景PNG时背景变黑的问题求助

解决Pillow粘贴透明PNG背景变黑的问题

你遇到的问题是因为底图采用了RGB模式(不支持透明通道),而黑车PNG带有Alpha透明通道,直接使用paste()方法时,透明区域会被默认填充为黑色。要保留透明效果,需要在粘贴时传入PNG自身的Alpha通道作为掩码。

修改后的代码

from PIL import Image, ImageDraw

# 创建白色RGB底图(如果需要整体透明可改为RGBA模式)
img = Image.new(mode="RGB", size=(410, 410), color="white")
black_rook = Image.open("black_rook.png")

# 粘贴时传入PNG的Alpha通道作为掩码,仅绘制非透明区域
img.paste(black_rook, (50, 50), mask=black_rook)

# 若需保留透明效果建议存为PNG;JPG不支持透明,会将透明区域转为底图白色
img.save("test.png")
# 也可保存为JPG:img.save("test.jpg")

关键说明

  • 当粘贴带Alpha通道的图片到RGB模式画布时,必须通过mask参数指定图片的Alpha通道,Pillow才会识别透明区域,让底层画布的颜色透过透明部分显示。
  • 如果最终需要带透明效果的成品图,建议将底图改为RGBA模式(Image.new(mode="RGBA", ...)),并保存为PNG格式(JPG不支持透明属性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:23:21