我使用以下代码打开了一张图片,并将其转换为只有16种颜色的调色板图像:
im = Image.open("SomeImage.png")
im = im.convert("P")
im = im.convert("P", palette = Image.ADAPTIVE, colors = 16)
我可以使用以下代码获得像素数据:
im.getpixel((x,y))
返回与调色板中颜色对应的整数索引。如何将调色板本身作为颜色列表获取?
我使用以下代码打开了一张图片,并将其转换为只有16种颜色的调色板图像:
im = Image.open("SomeImage.png")
im = im.convert("P")
im = im.convert("P", palette = Image.ADAPTIVE, colors = 16)
我可以使用以下代码获得像素数据:
im.getpixel((x,y))
返回与调色板中颜色对应的整数索引。如何将调色板本身作为颜色列表获取?
您可以使用im.palette
属性,但是建议使用im.convert(mode)
方法(您可以忽略mode
参数,让PIL自动优化)。这样会让PIL在内部代替您进行调色板查找,速度比您手动实现要快得多。
im.palette
从图像获取调色板,则该图像必须先有调色板。haishoku
的pip
模块,用于从任何图像中抓取调色板颜色和主色调。
Haishoku
im.getcolors()
对于使用PIL模块的我来说很有用。它以以下格式返回图像中颜色的列表:[ ( count, rgbaColor ), ( count, rgbaColor ), ... ]
。