8位位图调色板相关图像处理 您所在的位置:网站首页 rgb8位 8位位图调色板相关图像处理

8位位图调色板相关图像处理

2023-11-20 06:08| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有