Проблемы с методом квантования в PIL

Я пытаюсь преобразовать картинку в определенную цветовую палитру, используя метод quantize, но по каким-то причинам конечная картинка превращается в полностью черную.

from PIL import Image

COLORS = [0, 0, 0, 102, 102, 102, 0, 80, 205, 255, 255, 255, 170, 170, 170, 38, 201, 255, 1, 116, 32, 150, 65, 18, 105, 21, 6, 17, 176, 60, 255, 0, 19, 255, 120, 41, 176, 112, 28, 153, 0, 78, 203, 90, 87, 255, 193, 38, 255, 0, 143, 254, 175, 168]

img_p = Image.new("P", (1, 1))
img_p.putpalette(COLORS + [0] * (768 - len(COLORS)))

img = Image.open("a.png").convert("RGB").quantize(palette=img_p)
img.show()            # <- Image comes out completely black / Картинка выходит полностью черной

Картинка, которую я использую. Я пробовал и на других, но результат тот же.


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

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

Похоже, мне удалось исправить проблему, конвертируя картинку в RGBA перед сохранением/показом:

from PIL import Image

COLORS = [0, 0, 0, 102, 102, 102, 0, 80, 205, 255, 255, 255, 170, 170, 170, 38, 201, 255, 1, 116, 32, 150, 65, 18, 105, 21, 6, 17, 176, 60, 255, 0, 19, 255, 120, 41, 176, 112, 28, 153, 0, 78, 203, 90, 87, 255, 193, 38, 255, 0, 143, 254, 175, 168]

img_p = Image.new("P", (1, 1))
img_p.putpalette(COLORS + [0] * (768 - len(COLORS)))

img = Image.open("a.png").convert("RGB").quantize(palette=img_p)
img.convert("RGBA").show()            # <- It's normal now
→ Ссылка