一、位图和调色板的概念
1.位图(Bitmap):
例如我们常说的屏幕分辨率为 640*480,刷新频率为70Hz,意思是说每行要扫描 640 个象素,一共有 480 行,每秒重复扫描屏幕 70 次。我们称这种显示器为位映象设备。所谓位映象,就是指一个二维的象素矩阵,而位图就是采用位映象方法显示和存储的图象。
2.彩色图:
当一幅图中每个象素赋予不同的 RGB 值时,就能呈现出五彩缤纷的颜色了,这样就形成了彩色图。
下表是常见的一些颜色的 RGB 组合值。
颜色 | R | G | B |
---|---|---|---|
红 | 255 | 0 | 0 |
蓝 | 0 | 0 | 255 |
绿 | 0 | 255 | 0 |
白 | 255 | 255 | 255 |
黑 | 0 | 0 | 0 |
灰 | 128 | 128 | 128 |
3.调色板(颜色查找表):
有一个长宽各为 200 个象素,颜色数为 16 色的彩色图,每一个象素都用 R,G,B 三个分量表示,因为每个分量有 256 个级别,要用 8 位( bit),即一个字节(byte)来表示,所以每个象素需要用 3 个字节。整个图象要用 2002003, 约 120k 字节,可不是一个小数目呀!
如果我们用下面的方法, 就能省的多。
因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的每一行记录一种颜色的 R,G,B 值。这样当我们 表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第 0 行为 255,0,0(红色) ,那么当某个象素为 色时,只需要标明 0 即可。 让我们再来计算一下:16 种状态可以用 4 位(bit)表示,所以一个象素要用半个字节。整个图象要用 2002000.5,约 20k 字节,再加上表占用的字节为 3*16=48 字节.整个占用的字节数约为前面的1/6。
这张 RGB 的表,即是我们常说的调色板(Palette) 。不光是 Windows 位图,许多图象文件格式如 pcx,tif,gif 等都用到了调色板。
4.真彩色图
有一种图,它的颜色数高达 256 * 256 * 256 种,也就是说包含 R,G,B 颜色表示方法中所有的颜色,这种图叫做真彩色图( TrueColor)。真彩色图并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。
表示真彩色图时,每个象素直接用 R,G,B 三个分量字节表示,而不采用调色板技术,原因很明显:如果用调色板,表示一个象素也要用 24 位,这是因为每种颜色的索引要用 24 位(因为总共有 2 的 24 次方种颜色,即调色板有 2 的 24 次方行),和直接用 R, G,B 三个分量表示用的字节数一样,不但没有任何便宜,还要加上一个 256* 256* 256 *3 个字节的大调色板。所以真彩色图直接用 R,G,B 三个分量表示,