使用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
相关产品推荐
相关产品推荐

