RGB值在python 3问题中使用PIL问题

时间:2012-10-14 05:21:25

标签: python python-3.x image-processing python-imaging-library rgb

我正在使用Python 3中的PIL库修改.gif文件,在大多数情况下,到目前为止最终结果看起来应该如何,但是当检查一些rgb值时我发现我是只收回一些数字。

0,51,153,102是我最常见的4个值。可能还有1-2个人,但那就是它。在200x200 gif图像中,我只获得4-6 r g b值。

以下是我目前正在使用的通用格式的副本:

from PIL import Image

def main():
    image=Image.open("filename.gif")
    image=image.convert('RGB')
    width, height = image.size
    for x in range(width):
        for y in range(height):

            r, g, b = image.getpixel ((x,y))
            print (r,g,b)

我试图右移4以将高位传输到低位,但返回几乎总是为0。

我在编码时做错了吗?我认为它在尝试向右移位位值时会引起一些问题。

任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:1)

您发布的代码没有任何问题。

您要获取的完整值列表无疑是0,51,102,153,204和255,或十六进制:0x00,0x33,0x66,0x99,0xcc,0xff(代表0%的强度)到100%,步长为20%)。由于这些中有六个,它们可以表示的颜色总数是6 * 6 * 6 = 216,并且因为216< 256,这意味着它们适合GIF格式的256色调色板。

这些也称为web-safe colors,由于历史原因,它们通常用于GIF图像。

然而,你的右移问题似乎是无关紧要的:

>>> for x in 0, 51, 102, 153, 204, 255:
...     print x >> 4
... 
0
3
6
9
12
15
>>>