将图像数据写入文件的函数

来源:互联网 发布:java分布式开发视频 编辑:程序博客网 时间:2024/05/16 07:11


BOOL CreateBmp(char *filename, uint8_t *pRGBBuffer, int width, int height, int bpp)
{
 BITMAPFILEHEADER bmpheader;
 BITMAPINFO bmpinfo;
 FILE *fp = NULL;
 
 fp = fopen(filename,"wb");
 if( fp == NULL )
 {
  return FALSE;
 }
 
 bmpheader.bfType = ('M' <<8)|'B';
 bmpheader.bfReserved1 = 0;
 bmpheader.bfReserved2 = 0;
 bmpheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
 bmpheader.bfSize = bmpheader.bfOffBits + width*height*bpp/8;
 
 bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 bmpinfo.bmiHeader.biWidth = width;
 bmpinfo.bmiHeader.biHeight = height;
 bmpinfo.bmiHeader.biPlanes = 1;
 bmpinfo.bmiHeader.biBitCount = bpp;
 bmpinfo.bmiHeader.biCompression = BI_RGB;
 bmpinfo.bmiHeader.biSizeImage = 0;
 bmpinfo.bmiHeader.biXPelsPerMeter = 100;
 bmpinfo.bmiHeader.biYPelsPerMeter = 100;
 bmpinfo.bmiHeader.biClrUsed = 0;
 bmpinfo.bmiHeader.biClrImportant = 0;
 
 fwrite(&bmpheader,sizeof(BITMAPFILEHEADER),1,fp);
 fwrite(&bmpinfo.bmiHeader,sizeof(BITMAPINFOHEADER),1,fp);
 fwrite(pRGBBuffer,width*height*bpp/8,1,fp);
 fclose(fp);
 fp = NULL;
 
 return TRUE;
}

原创粉丝点击