3

我正在使用 Python 3 中的 PIL 库来修改 .gif 文件,到目前为止,在大多数情况下,最终结果看起来都应该是这样,但是在检查一些 rgb 值时,我注意到我只得到了几个数字.

0、51、153、102 是我最常得到的 4 个值。可能还有1-2个其他人,但就是这样。在 200x200 的 gif 图像中,我只得到 4-6 个 rgb 值。

这是我目前使用的通用格式的副本:

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。

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

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

4

1 回答 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 色调色板。

这些也被称为网络安全颜色,由于历史原因,它们经常用于 GIF 图像。

但是,您的右移问题似乎无关紧要:

>>> for x in 0, 51, 102, 153, 204, 255:
...     print x >> 4
... 
0
3
6
9
12
15
>>> 
于 2012-10-30T14:07:40.780 回答