VC创建BMP文件

BYTE* Data //bmp数据

int pBitsSize //bmp数据大小

int intImgSize //生成的bmp文件大小

CString filename//bmp文件名

void CreateBMP(BYTE* Data,int pBitsSize, int intImgSize, CStringfilename)
{
 //定义图形大小
 int iWidth = 320;
 int iHeight = 240;
 int iPixel = 8;
 RGBQUAD Quad[256];
 //图形格式参数
 LPBITMAPINFO lpbmih = new BITMAPINFO;
 lpbmih->bmiHeader.biSize =sizeof(BITMAPINFOHEADER);
 lpbmih->bmiHeader.biWidth = iWidth;
 lpbmih->bmiHeader.biHeight = -iHeight;
 lpbmih->bmiHeader.biPlanes = 1;
 lpbmih->bmiHeader.biBitCount = iPixel;
 lpbmih->bmiHeader.biCompression =BI_RGB;
 lpbmih->bmiHeader.biSizeImage = 0;
 lpbmih->bmiHeader.biXPelsPerMeter = 0;
 lpbmih->bmiHeader.biYPelsPerMeter = 0;
 lpbmih->bmiHeader.biClrUsed = 0;
 lpbmih->bmiHeader.biClrImportant = 0;

 //设定调色盘数据Quad(红色)

 for(int n=0; n<256;n++){  
  Quad[n].rgbBlue = 0;
  Quad[n].rgbGreen=0;  
  Quad[n].rgbRed=n;  
  Quad[n].rgbReserved=0;  
 }

 BYTE *pBits;

 //添加自绘图形
 pBits = Data;
 //保存到文件并创建位图结构
 BITMAPFILEHEADER bmfh;
 ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
 *((char *)&bmfh.bfType) = 'B';
 *(((char *)&bmfh.bfType) + 1) = 'M';
 bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) +sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);
 bmfh.bfSize = intImgSize;// bmfh.bfOffBits +(iWidth * iHeight) * iPixel / 8;


 TCHAR szBMPFileName[128];
 //int iBMPBytes = iWidth * iHeight * iPixel /8;
 strcpy(szBMPFileName,filename);
 CFile file;
 if(file.Open(szBMPFileName,CFile::modeWrite |CFile::modeCreate))
 {
  file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
  file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
  file.Write(Quad,sizeof(Quad));

  file.Write(pBits,pBitsSize);
  file.Close();
 }

 delete lpbmih; lpbmih = NULL;
}


来自东子的博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值