本文讲的书单元色调色处理及BMP文件调色板与数据的关系。
BMP文件开头有固定格式其文件大小是由:文件信息头(14字节),位图信息头(40字节),调色板,位图数据四部分组成。前两者是固定格式,后两者数据是由前两者的信息确定的,这些网上一搜一大堆不在说明。本文用的是C语言自带的<windi.h>下的BITMAPFILEHEADER、BITMAPINFOHEADER、RGBQUAD,位图数据使用char型数组来存储。
例一、先读取一个bmp文件,读取文件信息如下
位图文件头:
文件类型:19778
文件大小:166
保留字:0
保留字:0
实际位图数据的偏移字节数:62
位图信息头:
结构体的长度:40
位图宽:23
位图高:26
biPlanes平面数:1
biBitCount采用颜色位数:1
压缩方式:0
biSizeImage实际位图数据占用的字节数:104
X方向分辨率:0
Y方向分辨率:0
使用的颜色数:0
重要颜色数:0
(0 ,0 ,0 ,0 )(255,255,255,0 )
有图片信息知道该图片的biBitCount=1即一位表示一个像素,一个字节表示8个像素,调色板的个数为2个,第一个代表全黑,第二个代表全白,当像素为0时用第一个调色板,像素为1时用第二个调色板,然后根据数据值给其上色。
再看其数据蓝色部分,BMP文件数据是从左到右,从上到下读取。
当你读取第一个字节第一位是0,那么就会调用调色板0给其上色即黑色,第二位是0也调用调色板0给其上