修改前
修复后
运行正常
from PIL import Image # 读取图片 #报错信息解决ValueError: bad transparency mask--相关文档地址https://blog.csdn.net/kalath_aiur/article/details/103945309 #1. 检查 alpha 通道是否是一个有效的掩码。如果不是,则需要对 alpha 通道进行处理或修复。 #2. 如果 alpha 通道无效,可以尝试使用 Image.convert() 函数将图像转换为 RGBA 模式,然后重新生成 alpha 通道 guoqi = Image.open('image/5star.png').convert("RGBA") touxiang = Image.open('image/head.png').convert("RGBA") # 获取国旗的尺寸 x,y = guoqi.size # 根据需求,设置左上角坐标和右下角坐标(截取的是正方形) quyu = guoqi.crop((262,100, y+62,y-100)) # 获取头像的尺寸 w,h = touxiang.size # 将区域尺寸重置为头像的尺寸 quyu = quyu.resize((w,h)) # 透明渐变设置 for i in range(w): for j in range(h): color = quyu.getpixel((i, j)) alpha = 255-i//3 if alpha < 0: alpha=0 color = color[:-1] + (alpha, ) quyu.putpixel((i, j), color) # 粘贴到头像并保存 touxiang.paste(quyu,(0,0),quyu) touxiang.save('image/五星红旗半透明渐变头像.png')