Как заменить цвет PNG изображения?

У меня есть изображение в формате png -

Мне нужно заменить его цвет при помощи скрипта. Такой метод просто заливает всю форму цветом

image = Image.open(img_path)
image.paste(tuple(color), [0,0,image.size[0],image.size[1]])
image.save(f"{img.split('.', 1)[0]}-p.png")

Мне нужно залить цветом только те участки, на которых есть непрозрачные пиксели. Причём каждый пиксель нужно закрасить цветом той прозрачности, которая была у него до заполнения.

пример выходного изображения - введите сюда описание изображения


Ответы (1 шт):

Автор решения: gil9red

Делаем перебор пикселей и смотрим на те, у которых есть значение в альфаканале и заменяем их RGB на белый цвет

Пример:

# pip install Pillow
from PIL import Image

image_file = "input.png"
img = Image.open(image_file).convert('RGBA')

pixdata = img.load()

for y in range(img.size[1]):
    for x in range(img.size[0]):
        alpha = pixdata[x, y][3]
        if alpha:
            pixdata[x, y] = (255, 255, 255, alpha)

img.save("output.png")

Результат:

введите сюда описание изображения

→ Ссылка