首页 > 解决方案 > 枕头:从调色板创建 RGBA 图像

问题描述

我有一个 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 线,我在黑色背景上得到一个蓝色圆圈。

标签: pythonpython-imaging-library

解决方案


我不确定您要做什么,也不确定出了什么问题,但是以下内容应该使您能够创建一个调色板 alpha 图像并用 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')

在此处输入图像描述


推荐阅读