BOOL saveBmp(CString bmpName, unsigned char *imgBuf, long width, long height, int biBitCount, RGBQUAD *pColorTable)ide
{函數
//若是位圖數據指針爲0,則沒有數據傳入,函數返回指針
if(!imgBuf) return 0;內存
//顏色表大小,以字節爲單位,灰度圖像顏色表爲1024字節,彩×××像顏色表大小爲0it
int colorTablesize=0;io
if(biBitCount==8)class
colorTablesize=1024;變量
//待存儲圖像數據每行字節數爲4的倍數sed
long lineByte=(width * biBitCount/8+3)/4*4;file
//以二進制寫的方式打開文件
FILE *fp=fopen(bmpName,"wb");
if(fp==0)
return 0;
//申請位圖文件頭結構變量,填寫文件頭信息
BITMAPFILEHEADER fileHead;
fileHead.bfType = 0x4D42;//bmp類型
//bfSize是圖像文件4個組成部分之和
fileHead.bfSize= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + colorTablesize
+ lineByte*height;
fileHead.bfReserved1 = 0;
fileHead.bfReserved2 = 0;
//bfOffBits是圖像文件前3個部分所需空間之和
fileHead.bfOffBits=54+colorTablesize;
//寫文件頭進文件
fwrite(&fileHead, sizeof(BITMAPFILEHEADER),1, fp);
//申請位圖信息頭結構變量,填寫信息頭信息
BITMAPINFOHEADER head;
head.biBitCount=biBitCount;
head.biClrImportant=0;
head.biClrUsed=0;
head.biCompression=0;
head.biHeight=height;
head.biPlanes=1;
head.biSize=40;
head.biSizeImage=lineByte*height;
head.bi;
head.biXPelsPerMeter=0;
head.biYPelsPerMeter=0;
//寫位圖信息頭進內存
fwrite(&head, sizeof(BITMAPINFOHEADER),1, fp);
//若是灰度圖像,有顏色表,寫入文件
if(biBitCount==8)
fwrite(pColorTable, sizeof(RGBQUAD),256, fp);
//寫位圖數據進文件
fwrite(imgBuf, height*lineByte, 1, fp);
//關閉文件
fclose(fp); return 1;
}