Как оптимизировать алгоритм изменения цвета градиента?

У меня есть пара строчек кода, которая умеет менять цвет градиента на указанный, выглядит так:

fade = Im.open("path")

for i in range(fade.size[0]):
   for j in range(fade.size[1]):
       if fade.getpixel((i, j))[-1] != 0:
           fade.putpixel((i, j), (255, 255, 255, fade.getpixel((i, j))[-1]))

проблема в том, что такая конвертация - очень не оптимальная, занимает 10 секунд

Как это можно оптимизировать?


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

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

numpy предоставляет классное решение

fade = Im.open(path)
        pix = np.array(fade)
        alpha = pix[:, :, 3]
        mask = alpha > 0
        pix[mask, 0] = 255
        pix[mask, 1] = 255
        pix[mask, 2] = 255
        fade = Image.fromarray(pix)
→ Ссылка