Colorize image while preserving transparency with PIL?

前端 未结 2 566
没有蜡笔的小新
没有蜡笔的小新 2020-12-09 23:13

Okay, here\'s the situation:

I want to use the Python Image Library to \"theme\" an image like this:

Theme color:

2条回答
  •  抹茶落季
    2020-12-09 23:37

    You need to convert to grayscale first. What I did:

    1. get original alpha layer using Image.split()
    2. convert to grayscale
    3. colorize using ImageOps.colorize
    4. put back original alpha layer

    Resulting code:

    import Image
    import ImageOps
    
    def tint_image(src, color="#FFFFFF"):
        src.load()
        r, g, b, alpha = src.split()
        gray = ImageOps.grayscale(src)
        result = ImageOps.colorize(gray, (0, 0, 0, 0), color) 
        result.putalpha(alpha)
        return result
    
    img = Image.open("image.png")
    tinted = tint_image(img, "#33b5e5")
    

提交回复
热议问题