PIL获取图像调色板

8

我使用以下代码打开了一张图片,并将其转换为只有16种颜色的调色板图像:

im = Image.open("SomeImage.png")
im = im.convert("P")
im = im.convert("P", palette = Image.ADAPTIVE, colors = 16)

我可以使用以下代码获得像素数据:

im.getpixel((x,y))

返回与调色板中颜色对应的整数索引。如何将调色板本身作为颜色列表获取?


如果您正在寻找PIL的文档,请考虑查看“友好的PIL分支”——pillow的文档,其中包含Image.getpaletteImage.palette的详细信息。 - Andrew Walker
3个回答

4

您可以使用im.palette属性,但是建议使用im.convert(mode)方法(您可以忽略mode参数,让PIL自动优化)。这样会让PIL在内部代替您进行调色板查找,速度比您手动实现要快得多。


3
如果您想使用im.palette从图像获取调色板,则该图像必须先有调色板。
我曾经和您一样面临同样的困惑,所以我编写了一个名为haishokupip模块,用于从任何图像中抓取调色板颜色和主色调。 Haishoku

2

im.getcolors() 对于使用PIL模块的我来说很有用。它以以下格式返回图像中颜色的列表:[ ( count, rgbaColor ), ( count, rgbaColor ), ... ]


2
它只是计算颜色。在调色板图像的情况下,它返回(计数,颜色索引)。并没有回答问题。 - Jean-François Fabre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接