Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
337 views
in Technique[技术] by (71.8m points)

python - How can i fix transparency in image? PIL

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()
question from:https://stackoverflow.com/questions/65847401/how-can-i-fix-transparency-in-image-pil

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I fix this with Image.alpha_composite()


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...