Adding a transparent circle to an image on python with PIL

前端 未结 2 596
刺人心
刺人心 2021-01-21 07:24

I have a python program that craetes a png file with a circle on it. Now I want this circle to be semi transparent, given an alpha value.

Here is what I do:

<         


        
相关标签:
2条回答
  • 2021-01-21 07:49

    Instead of a 3-tuple RGB value, (255, 128, 10), pass a 4-tuple RGBA value:

    canvas.ellipse((p_x - 5, p_y - 5, p_x + 5, p_y + 5), 
                   fill=(255, 128, 10, 50))
    

    For example,

    import Image
    import ImageDraw
    
    img = Image.new('RGBA', size = (100, 100), color = (128, 128, 128, 255))
    canvas = ImageDraw.Draw(img)
    
    # Now I draw the circle:
    p_x, p_y = 50, 50
    canvas.ellipse((p_x - 5, p_y - 5, p_x + 5, p_y + 5), fill=(255, 128, 10, 50))
    
    # now save and close
    del canvas
    img.save('/tmp/test.png', 'PNG')
    

    enter image description here

    0 讨论(0)
  • 2021-01-21 07:49

    I used Image.composite(background, foreground, mask) to mask a semi transparent circle on a foreground.

    I followed the instructions from here: Merging background with transparent image in PIL

    Thanks to @gareth-res

    0 讨论(0)
提交回复
热议问题