You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py调整头像尺寸后调用tobytes()报不支持图片类型错误

解决调整头像尺寸后Discord提示“不支持的图片类型”问题

问题原因

  • 直接调用pilImage.tobytes()返回的是原始像素数据,不包含图片格式的文件头信息,Discord无法识别这种裸数据的图片类型。
  • Image.ANTIALIAS已被废弃,需要替换为Image.LANCZOS(或Resampling.LANCZOS,根据Pillow版本)。

修复后的代码

将原代码最后两行替换为以下内容:

# 替换废弃的ANTIALIAS为LANCZOS,统一转换为RGBA格式
pilImage = pilImage.resize((250, 250), Image.LANCZOS).convert("RGBA")
# 将调整后的图片保存为带格式头的PNG字节流
avatar_buffer = BytesIO()
pilImage.save(avatar_buffer, format="PNG")
avatar_buffer.seek(0)  # 将指针移到缓冲区开头,确保读取完整数据

await client.user.edit(
    password=str(data.get()['Settings']['password']),
    avatar=avatar_buffer.read()
)

关键说明

  • 使用save()方法将图片写入BytesIO时指定format='PNG',生成带完整文件头的标准图片字节流,Discord才能正确识别图片类型。
  • 调用seek(0)是因为写入数据后缓冲区指针会停在末尾,必须回到开头才能读取完整的图片数据。
  • 统一转换为RGBA格式可以避免部分非透明图片格式(如JPG)上传时的兼容性问题。

内容的提问来源于stack exchange,提问作者CrotaL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:44:54