bmp位图的数据结构如下所示:
unsigned char* pBmpBuf;
int bmpWidth;
int bmpHeight;
RGBQUAD* pColorTable;
int biBitCount;
unsigned char* readBmp(char* bmpName)
{
FILE* fp = fopen(bmpName, "rb"); //以二进制读的方式打开指定的图像文件
if (fp == 0) return 0;
fseek(fp, sizeof(BITMAPFILEHEADER), 0);
BITMAPINFOHEADER infoHead;
fread(&infoHead, sizeof(BITMAPINFOHEADER), 1, fp);
bmpWidth = infoHead.biWidth;
bmpHeight = infoHead.biHeight;
biBitCount = infoHead.biBitCount;
//strick
int lineByte = (bmpWidth * biBitCount / 8 + 3) / 4 * 4;
if (biBitCount == 8)
{
pColorTable = new RGBQUAD[256];
fread(pColorTable, sizeof(RGBQUAD), 256, fp);
}
pBmpBuf = new unsigned char[lineByte * bmpHeight];
fread(pBmpBuf, 1, lineByte * bmpHeight, fp);
fclose(fp);