16位色
在嵌入式平台上常见的16位r5g6b5位图实际上采用的掩模的方式而不是索引的方式来表示图像。此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。即:
变量名 | 地址偏移 | 大小 (bytes) | 值 | 作用 |
第一部分 | 0036 | 4 | 0000F800 | 红色分量的掩模 |
第二部分 | 003A | 4 | 000007E0 | 绿色分量的掩摸 |
第三部分 | 003E | 4 | 0000001F | 蓝色分量的掩模 |
第四部分 | 0042 | 4 | 00000000 | Alpha分量的掩模(缺省为0) |
共计:16字节
低于16位色
分1/4/8三种
调色板实际上是一个数组,共有biClrUsed个元素(如果该值为零,则有2BitCount个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节,其定义如下:
typedef struct tagRGBQUAD {
BYTE rgbBlue; //该颜色的蓝色分量
BYTE rgbGreen; //该颜色的绿色分量
BYTE rgbRed; //该颜色的红色分量
BYTE rgbReserved; //保留值
} RGBQUAD;
补充
调色板信息是可选的,有的位图文件中有,有的没有。比如24位色,每个分量占8位,调色板就没用了,可以省略。对于16位色,分了很多种,如常用的565,还有5551等,因此一般需要调色板项。
调色板如上,共占用16个字节,紧接在“位图信息头”后面存放。