почему не работает получение аватара юзера discord.py, pillow?
написал команду которая берет аватар юзера и фотошопит его на картинку не работает получение аватара
скрипт:
@bot.command(pass_context = True)
#@commands.cooldown(1, 120, commands.BucketType.user)
async def avatar(ctx, member: discord.Member = None):
#await ctx.message.delete(delay = 0)
if member == None:
member = ctx.author
os.chdir("./images")
#получение аватара
avatar = member.avatar_url_as(size = 128)
avt = BytesIO(await avatar.read())
ima = Image.open(avt)
img = ima.resize((500, 500))
#обрезка в круг
bigsize = (img.size[0] * 3, img.size[1] * 3)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + bigsize, fill = 255)
mask = mask.resize(img.size, Image.ANTIALIAS)
img.putalpha(mask)
output = ImageOps.fit(img, mask.size, centering = (0.5, 0.5))
output.putalpha(mask)
output.save('output.png')
#соеденение
background = Image.open('avatar.jpg')
background = background.resize((1280, 1280))
background.paste(img, (92, 156), img)
background.save('overlap.png')
#отправка результата в чат
await ctx.send(file = discord.File("overlap.png"))
os.remove("output.png"), os.remove("overlap.png"), os.chdir("..")
Ответы (1 шт):
Автор решения: Bohdan
→ Ссылка
from io import BytesIO
import requests
from PIL import Image
...
def load_image(url: str):
_bytes = BytesIO(requests.get(url).content)
image = Image.open(_bytes).convert("RGBA")
return image
avatar = member.avatar_url_as(size = 128)
avatar = load_image(avatar)
...