discord.py bot 使用 Pillow - ValueError:图像不匹配

Posted

技术标签:

【中文标题】discord.py bot 使用 Pillow - ValueError:图像不匹配【英文标题】:discord.py bot using Pillow - ValueError: images do not match 【发布时间】:2021-05-05 03:39:50 【问题描述】:

我正在尝试使用一个命令制作一个 discord.py 机器人,该命令获取已标记用户的头像,将透明图像放在顶部,然后将编辑后的照片发回。我一直在将教程和其他 *** 问题中的代码碎片混在一起,所以我对我的代码在做什么并不完全有信心。目前它不起作用,因为我在命令行中不断收到错误。下面是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。如果能得到任何帮助,我将不胜感激。

【问题讨论】:

您是否尝试过检查图像模式question @Ceres 我不知道这是什么意思。我该怎么做才能使它们成为正确的模式? 【参考方案1】:

感谢 Twitter 用户 __hetz,我可以回答我自己的 *** 帖子。

两张图片的尺寸必须匹配。就是这样。 此外,我还找到了一种更简单的方法,可以将头像资源转换为所需大小的 .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 bot 使用 Pillow - ValueError:图像不匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 discord.py 让 discord bot ping 用户 [关闭]

Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)

Discord Bot 响应短语(Discord.py 重写)

discord.py 'Bot' 对象没有属性 'send_message'

Discord.py 从后台线程关闭 Bot

Discord bot 运行命令两次 discord.py