python - 枕头:从调色板创建 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 线,我在黑色背景上得到一个蓝色圆圈。
解决方案
我不确定您要做什么,也不确定出了什么问题,但是以下内容应该使您能够创建一个调色板 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')
推荐阅读
- javascript - 找不到模块“actions-on-google”,正在使用 dialogflow
- android - Admob 查询广告很慢
- facebook - 如何在 Facebook 上发布自己的视频,使其不会自动播放?
- ios - SwiftUI 文本不会扩展到多行
- android - 使用 Kotlin DSL 发布库
- javascript - 使用 Weather API 并按日期排序
- xml - XSLT:复制 XML 的节点并更改命名空间
- oracle - 通过过程执行没有得到正确的输出
- mysql - Mysql加入同一张表而不反向
- ffmpeg - h264_mp4toannexb 过滤器在 ffmpeg 连接时无法接收输出数据包