0

when i trying to run this code, my image breaks

screen

User avatar should be transparent

I want make like this:

this

How can i fix this?

import io
from PIL import Image, ImageDraw

im_rgb = Image.open('cards/customcard1.png')
im_a = Image.new("RGBA", im_rgb.size, 0)
im_a.paste(im_rgb)
draw = ImageDraw.Draw(im_a)
draw.ellipse((92, 193, 403, 504), fill=255)

memberavatar = await _ctx.author.avatar_url.read()

def rounded_avatar(member):
    with Image.open(io.BytesIO(member)) as im:
        with Image.new("RGBA", im.size) as background:
            rgb_avatar = im.convert("RGBA")
            with Image.new("L", im.size, 0) as mask:
                mask_draw = ImageDraw.Draw(mask)
                mask_draw.ellipse([(0, 0), im.size], fill=255)
                background.paste(rgb_avatar, (0, 0), mask=mask)
        return background

roundedAvatar = rounded_avatar(memberavatar)
roundedAvatar = roundedAvatar.resize((311, 311), Image.ANTIALIAS)
roundedAvatar.save('cards/roundedAva.png')
r = Image.open('cards/roundedAva.png').convert('RGBA')
im_a.paste(r, (92, 193))

im_a.save('C:/Users/RAINGM/desktop/hueta.png')
im_a.show()
RAINGM
  • 133
  • 7

1 Answers1

0

I fix this with Image.alpha_composite()

RAINGM
  • 133
  • 7