Python 3中使用PIL出现RGB值问题

3
我正在使用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个回答

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安全颜色,由于历史原因,它们经常用于GIF图像中。

然而,你的右移问题似乎与此无关:

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

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