#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')