1.位图数据文件除了无调色板的真彩色存放方式。
2.调色板为像素颜色的位图数据存放索引的方式。
3.还有调色板不是颜色而是像素颜色掩码调色板,位图数据文件为像素颜色的存放形式,例如:r5g6b5格式的文件。
现在简单介绍第三种形式:
r5g6b5格式的掩码调色板文件解析:
2.调色板为像素颜色的位图数据存放索引的方式。
3.还有调色板不是颜色而是像素颜色掩码调色板,位图数据文件为像素颜色的存放形式,例如:r5g6b5格式的文件。
现在简单介绍第三种形式:
r5g6b5格式的掩码调色板文件解析:
如果存放的形式调色板不是没有调色板的,也不是索引调色板,而是掩码调色板,例如r5g6b5格式的位图文件。
掩码调色板内容,目的是给位图数据文件进行"与"和移位运算得到真正的像素分量值的:
典型的调色板规范在文件中的顺序为为:
00F8 0000 E007 0000 1F00 0000 0000 0000
其中
00F8 0000为FB00h=1111100000000000(二进制),是蓝红分量的掩码。
E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。
1F00 0000为001Fh=0000000000011111(二进制),是蓝色分量的掩码。
0000 0000设置为0。
r = (F102 AND F800) >> 8 = F0h = 240
g= (F102 AND 07E0)>> 3 = 20h = 32
b=(F102 AND 001F) << 3 = 10h =16
这样再将rgb位移:
unsigned int dwPixelColor = r;
dwPixelColor = (dwPixelColor<<8) & g;
dwPixelColor = (dwPixelColor<<8) & b;
就得到了每个像素的值,可以将这些像素值提交给显卡就可以把图像渲染出来,当然一些图像软件会在代码里面进行这样的位图文件解析。