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

我正在尝试使用一个命令制作一个 discord.py 机器人,该命令获取已标记用户的头像,将透明图像放在顶部,然后将编辑后的照片发回。我一直在将教程和其他 StackOverflow 问题中的代码碎片混在一起,所以我对我的代码在做什么并不完全有信心。目前它不起作用,因为我在命令行中不断收到错误。下面是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 我不知道这是什么意思。我该怎么做才能使它们成为正确的模式?

标签: python discord python-imaging-library discord.py


【解决方案1】:

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

两张图片的尺寸必须匹配。就是这样。 此外,我还找到了一种更简单的方法,可以将头像资源转换为所需大小的 .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 机器人。

【讨论】:

    猜你喜欢
    • 2022-08-07
    • 2018-10-22
    • 2012-08-30
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多