颜色索引表(颜色查找表)

时间:2022-07-07 19:19:12

对于一个256色(BPP=8)的800*600分辨率的图像而言,若R、G、B分别采用一个字节描述,则需要800*600*3=1440000Byte的存储空间,使用颜色表则只需800*600*1+256*3=480768Byte的存储空间。

以下是一个256色的颜色索引表的例子
——————————————————————————————
index            R                  G                         B
0                  14                  125                    69
1                  75                  159                    251        
2                  159                22                      37
3                  0                     0                        0
4                  255                  255                  255
...                  ...                  ...                         ...
...                  ...                  ...                         ...
255             48                  69                       55
                (三基色的比例搭配是我瞎编的)
——————————————————————————————
很显然,对于256色的图形,当使用颜色索引表的时候,对于每个像素我们只需用一个字节存储其在索引表中的index值即可,如此看来一副800*600像素的256色的图形的存储只需要800*600*1个Byte,存储该索引表也只需256*3个Byte而已。
同样对于这样一个256色的800*600分辨率的图形,如果采用直接的三基色存储的话,则对于任何一个像素我们都需要去用三个字节记录它的R、G、B三个分量的值。比如说,某个像素的颜色和上述索引表的index为2的那种颜色一样,对于索引表方式,我们只需记住该点的颜色为2即可,这当然用一个字节就可以存储了(因为只有256种,这是其中的第2种);但是如果我们对于该点采用直接记录其三个基色分量的存储方式的话,我们便需要记录这样一组数据( 159,22,37),显然这应该用三个字节分别存储(虽然每个分量确实不是各自都有256中不同值,但是为了简单起见实际中我们还是会用一个字节去记录一个分量)。