使用枕头和discord.py发出裁剪图像

问题描述

我目前正在尝试为我的机器人制作一个向用户显示等级卡的命令。我已经在卡上成功获得了他们的名字和pfp,但是在尝试将pfp裁剪为圆形时遇到了问题。这是我的代码:

@bot.command()
async def checkrank(ctx,user: discord.Member = None):
  if user == None:
    user = ctx.author
  
  image = Image.open('Levels.png')
  
  titlefont = ImageFont.truetype('Poppins-SemiBold.ttf',60)

  draw = ImageDraw.Draw(image)

  asset = user.avatar_url_as(size=128)
  data = BytesIO(await asset.read())
  pfp = Image.open(data)
  mask = Image.open(data).convert('L')
  pfp = pfp.resize((100,100))

  output = ImageOps.fit(pfp,mask.size,centering=(0.5,0.5))
  output.putalpha(mask)

  title = f'{user.name}'

  image.paste(pfp,(70,70))
  draw.text((200,80),title,(0,0),font=titlefont)
  image.save('levelout.png')

当我运行命令时,一切正常,并且没有收到任何错误消息,但是图像保持正方形,并且不会裁剪。之前我已经成功地将圆形裁剪的图像实现到命令中,所以我不太确定自己在搞什么。任何帮助将不胜感激。

解决方法

我认为您的问题出在代码行中。

pfp = pfp.resize((100,100))

正如您所说,这将为您提供一个正方形,因为100 x 100是相同的尺寸,正方形具有相同的边。也许如果您在此处调整数字,您的图片会被调整尺寸吗?

image.paste(pfp,(70,70))

据我所知,这将再次使其成为正方形,所以也许也可以使用这些数字。

如果您需要其他帮助,请随时回复。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...