使用C++读取8位BMP位图
一、 基础知识
- 微软的图像库关于位图的数据结构BITMAPFILEHEADER、BITMAPINFOHEADER
- 位图存储时候的四字节对齐。
- 调色板的理解
二、八位图片的读取
细节见代码和注释。需要注意的是我们实际读的时候忽略了填充的字节(没必要)。
BYTE *RmwRead8BitBmpFile2Img(const char * filename,int *width,int *height){
FILE *binFile;
BYTE *pImg=NULL;
BITMAPFILEHEADER fileHeader;
BITMAPINFOHEADER bmpHeader;
BOOL isRead=TRUE;
int linenum,ex; //linenum:一行像素的字节总数,包括填充字节
//open file
if((binFile=fopen(filename,"rb"))==NULL) return NULL;
//read struts
if(fread((void *)&fileHeader,1,sizeof(fileHeader),binFile)!=sizeof(fileHeader)) isRead=FALSE;
if(fread((void *)&bmpHeader,1,sizeof(b