代码:
avatar = Image.open('temp_avatar.png').convert('RGBA')
color = (255,255,255,0)
mask = Image.new("L", avatar.size, 0)
mask_draw = ImageDraw.Draw(mask)
size = avatar.width
mask_draw.polygon([~irrelevant~], fill=255)
avatar_finale = avatar.copy()
avatar_finale.putalpha(mask_draw)
avatar_finale.save('temp_avatar.png')
错误信息:
File "C:\Users\amit2\source\repos\LAKRIS bot\LAKRIS bot\cogs\rank.py", line 42, in processing
avatar_finale.putalpha(mask_draw)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\PIL\Image.py", line 1654, in putalpha
alpha.load()
AttributeError: 'ImageDraw' object has no attribute 'load'
我真的不知道问题是什么,我用 .putalpha() 运行了一个非常相似的代码并且它有效。
你的倒数第二行是错误的 - 它试图将 mask 的 Draw 对象,而不是 mask 本身,放入 Alpha channel 。
所以,替换:
avatar_finale.putalpha(mask_draw)
与:
avatar_finale.putalpha(mask)
我是一名优秀的程序员,十分优秀!