我正在使用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。
我在编码时做错了吗?我认为它在尝试向右移位位值时会引起一些问题。
任何帮助将不胜感激......
答案 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
>>>