Подушка: Создайте изображение RGBA из палитры

#python #python-imaging-library

Вопрос:

У меня есть палитра RGBA и изображение mode=’P’. Я хочу создать из них образ RGBA.

Я могу заставить его работать с RGB, но не с RGBA.

Вот попытка, где я хочу, чтобы синий круг на прозрачном фоне:

 from PIL import Image, ImageDraw, ImagePalette  palette = ImagePalette.ImagePalette('RGBA', [0,0,0,0, 0,0,255,255]) # palette = ImagePalette.ImagePalette('RGB', [0,0,0, 0,0,255])  labels = Image.new('P', (100,100)) drawer = ImageDraw.Draw(labels) drawer.ellipse(((25,25),(75,75)), 1)  labels.putpalette(palette) out = labels.convert('RGBA') # out = labels.convert('RGB') out.save('out.png','PNG')  

Я просто получаю черное изображение. Используя линии RGB, я получаю синий круг на черном фоне.

Ответ №1:

Я не уверен, что вы пытаетесь сделать, и что происходит не так, но следующее должно позволить вам создать альфа-изображение палитры и нарисовать его 2 цветами:

 from PIL import Image  # Create a new palette image labels = Image.new('P', (100,100))  # Push an RGBA palette into it, Red, Green, Blue, 253*Black labels.putpalette([255,0,0,255, 0,255,0,255, 0,0,255,255, *(253*[0,0,0])], rawmode='RGBA')  # Get a drawing context and draw ellipse using palette entries 0 and 1 drawer = ImageDraw.Draw(labels) drawer.ellipse([(25,25),(75,75)], fill=1, outline=0)  labels.save('result.png')  

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