BOOL savebitmap(const BITMAPINFOHEADER* pHeader, const char* data, int nImgW, int nImgH, const char* filename) { BITMAPINFOHEADER bmiHdr; //定义信息头 bmiHdr.biSize = sizeof(BITMAPINFOHEADER); bmiHdr.biWidth = nImgW; bmiHdr.biHeight = nImgH; bmiHdr.biPlanes = 1; bmiHdr.biBitCount = 24; bmiHdr.biCompression = BI_RGB; bmiHdr.biSizeImage = nImgW*nImgH*3; bmiHdr.biXPelsPerMeter = 0; bmiHdr.biYPelsPerMeter = 0; bmiHdr.biClrUsed = 0; bmiHdr.biClrImportant = 0; FILE* fp = fopen(filename, "wb"); if (fp) { BITMAPFILEHEADER fheader = { 0 }; fheader.bfType = 'M' << 8 | 'B'; fheader.bfSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + pHeader->biSizeImage; fheader.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER); fwrite(&fheader, 1, sizeof(fheader), fp); fwrite(pHeader, 1, sizeof(BITMAPINFOHEADER), fp); fwrite(data, 1, bmiHdr.biSizeImage, fp); fclose(fp); return TRUE; } else return FALSE; }