8位位图调色板相关图像处理 | 您所在的位置:网站首页 › rgb8位 › 8位位图调色板相关图像处理 |
8位位图色彩空间为256色,必定使用调色板来确定所有像素的RGB色和透明度。调色板就是256个RGBQUAD的数组,大小为256 X sizeof(RGBQUAD),每一个元素RGBQUAD代表一种颜色(包含rgb各8位数值以及8位的透明度数值)。所以8位位图中的图像数据段中的每个字节代表的并不是真实的像素颜色,而只是表示某个像素点的真实颜色在调色板中的序号。比如图像数据段中的第一个字节数值为0x13,表示该像素的实际颜色是调色板中第19个元素所表示的颜色。 RGBQUAD plane[256];RGBQUAD realColor = plane[19]; 那么8位位图怎么转换位32位位图呢? 分析一下位图的构成 8位位图使用调色板,通过数据段的数据取得该像素在调色板数组的下标,根据下标获取实际颜色值。 32位位图数据段位真彩色,每32位代表的就是真实的颜色值。 但是要注意的是,8位位图数据段每一个字节代表一个像素颜色,而32位位图每4个字节代表一个像素的颜色。而图像数据中的行是4字节对齐,所以8位位图数据段做了对齐处理,不足4字节的行被扩充位4字节对齐,比如图像中一行15个像素,而位图数据段这一行占用了16个字节的空间。32位位图数据段本身就是4字节对齐无需处理。这一点很重要,当你要获取每一行某个像素的颜色,你必须找对这个像素在数据段的偏移量。 最后一点: 位图数据在内存中的每一行是倒序排列的,显示在屏幕上的第一行,其数据却在数据段的最后一行。 创建DIB(设备无关位图)的时候,位图头信息中的biHeight是正值则行数据倒序,如果是负值则行数据正序。
|
CopyRight 2018-2019 实验室设备网 版权所有 |