PIL:将RGB图像转换为特定的8位调色板?

发布于 2021-01-29 16:53:24

使用Python Imaging Library,我可以调用

img.convert("P", palette=Image.ADAPTIVE)

要么

img.convert("P", palette=Image.WEB)

但是有没有办法转换为任意调色板?

p = []
for i in range(0, 256):
    p.append(i, 0, 0)
img.convert("P", palette=p)

它将每个像素映射到图像中最接近的颜色的位置?还是为此提供支持,仅此Image.WEB而已?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在查看源代码时,convert()我看到它引用了im.quantize
    quantize可以接受调色板参数。如果提供的图像具有调色板,则此功能将采用该调色板并将其应用于图像。

    例:

        src = Image.open("sourcefilewithpalette.bmp")
        new = Image.open("unconvertednew24bit.bmp")
        converted = new.quantize(palette=src)
        converted.save("converted.bmp")
    

    另一个提供的答案对我不起作用(它做了一些非常糟糕的双调色板转换之类的事情,),但是此解决方案起作用了。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看