discord.py bot using Pillow - ValueError: images do not match
discord.py bot using Pillow - ValueError: images do not match
我正在尝试使用一个命令制作一个 discord.py 机器人,该命令获取标记用户的头像,将透明图像放在顶部,然后将编辑后的照片发回。我一直在将教程中的代码片段和其他 Whosebug 问题混合在一起,所以我对我的代码在做什么并不完全有信心。目前它不起作用,因为我在命令行中不断收到错误消息。下面是 bot 命令的代码:
@scb.command(name='smack', description="smack cam someone", pass_context=True)
async def smack(ctx, member: Member = None):
if not member:
member = ctx.author
smackfile=r"E:\Smack Cam Bot\pie.png"
asset = member.avatar_url_as(size=128)
data = BytesIO(await asset.read())
providedimage = Image.open(data)
pie = Image.open(smackfile)
smack = Image.new("RGBA", providedimage.size)
smack = Image.alpha_composite(smack, pie)
smack.save("smack.png")
await scb.send_file(ctx.message.channel, "smack.png")
这里是错误:
Ignoring exception in command smack:
Traceback (most recent call last):
File "C:\Users\aj-ja\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "smackbot.py", line 37, in smack
smack = Image.alpha_composite(smack, pie)
File "C:\Users\aj-ja\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\Image.py", line 2979, in alpha_composite
return im1._new(core.alpha_composite(im1.im, im2.im))
ValueError: images do not match
除了一点点Pygame,我没怎么用过Python。如果能得到任何帮助,我将不胜感激。
感谢 Twitter 用户 __hetz,我可以回答我自己的 Whosebug post。
两张图片的尺寸必须匹配。就是这样。
此外,我发现了一种更简单的方法来将头像资产转换为我需要的大小的 .PNG 图像:
await ctx.author.avatar_url_as(format="png",size=128).save(fp="avatar.png")
我还在 alpha_composite 行中使用了错误的变量名,所以它应该是:
smack = Image.alpha_composite(providedimage, pie)
最后但同样重要的是,我用来发送消息的功能已经过时了。它应该是:
await ctx.message.channel.send(file=discord.File("smack.png"))
希望这可以帮助更多愚蠢的青少年尝试制作他们自己的 Discord 机器人。
我正在尝试使用一个命令制作一个 discord.py 机器人,该命令获取标记用户的头像,将透明图像放在顶部,然后将编辑后的照片发回。我一直在将教程中的代码片段和其他 Whosebug 问题混合在一起,所以我对我的代码在做什么并不完全有信心。目前它不起作用,因为我在命令行中不断收到错误消息。下面是 bot 命令的代码:
@scb.command(name='smack', description="smack cam someone", pass_context=True)
async def smack(ctx, member: Member = None):
if not member:
member = ctx.author
smackfile=r"E:\Smack Cam Bot\pie.png"
asset = member.avatar_url_as(size=128)
data = BytesIO(await asset.read())
providedimage = Image.open(data)
pie = Image.open(smackfile)
smack = Image.new("RGBA", providedimage.size)
smack = Image.alpha_composite(smack, pie)
smack.save("smack.png")
await scb.send_file(ctx.message.channel, "smack.png")
这里是错误:
Ignoring exception in command smack:
Traceback (most recent call last):
File "C:\Users\aj-ja\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "smackbot.py", line 37, in smack
smack = Image.alpha_composite(smack, pie)
File "C:\Users\aj-ja\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\Image.py", line 2979, in alpha_composite
return im1._new(core.alpha_composite(im1.im, im2.im))
ValueError: images do not match
除了一点点Pygame,我没怎么用过Python。如果能得到任何帮助,我将不胜感激。
感谢 Twitter 用户 __hetz,我可以回答我自己的 Whosebug post。
两张图片的尺寸必须匹配。就是这样。 此外,我发现了一种更简单的方法来将头像资产转换为我需要的大小的 .PNG 图像:
await ctx.author.avatar_url_as(format="png",size=128).save(fp="avatar.png")
我还在 alpha_composite 行中使用了错误的变量名,所以它应该是:
smack = Image.alpha_composite(providedimage, pie)
最后但同样重要的是,我用来发送消息的功能已经过时了。它应该是:
await ctx.message.channel.send(file=discord.File("smack.png"))
希望这可以帮助更多愚蠢的青少年尝试制作他们自己的 Discord 机器人。