Colorir imagem preservando a transparência com o PIL?

Ok, aqui está a situação:

Eu quero usar a biblioteca de imagens Python para "tema" uma imagem como esta:

Cor do tema: "#33B5E5"

EM: FORA:

Eu obtive o resultado usando esses comandos com o ImageMagick:

convert image.png -colorspace gray image.png
mogrify -fill "#33b5e5" -tint 100 image.png
Explicação:


A imagem é primeiro convertida em preto e branco e, em seguida, é temática.

Eu quero obter o mesmo resultado com a biblioteca de imagens do Python. Mas parece que estou tendo alguns problemas usando-o desde:

Não consegue lidar com transparênciaPlano de fundo (transparência na imagem principal) recebe também temática ..

Estou tentando usar este script:

import Image
import ImageEnhance

def image_overlay(src, color="#FFFFFF", alpha=0.5):
    overlay = Image.new(src.mode, src.size, color)
    bw_src = ImageEnhance.Color(src).enhance(0.0)
    return Image.blend(bw_src, overlay, alpha)

img = Image.open("image.png")
image_overlay(img, "#33b5e5", 0.5)

Você pode ver que não convertei para uma escala de cinza primeiro, porque isso também não funcionou com a transparência.

Sinto muito por postar tantos problemas em uma pergunta, mas não pude fazer mais nada:

Espero que todos entendam.

questionAnswers(2)

yourAnswerToTheQuestion