瞧瞧这个将CBitmap写到Bmp文件里的函数

首先,这个函数只能针对24色的bitmap.

void CAppDlg::WriteBmp(CBitmap *PBitmap)
{
 BITMAPINFO *m_pBMI;
 BYTE *m_pDIBData;
 BITMAPFILEHEADER bfh;
 BITMAPINFOHEADER bi;
 BITMAP BM;
 PBitmap->GetObject(sizeof(BM),&BM);
 CClientDC dc(this);
 bi.biSize  = sizeof(BITMAPINFOHEADER);
 bi.biWidth  = BM.bmWidth;
 bi.biHeight   = BM.bmHeight;
 bi.biPlanes   = 1;
 bi.biBitCount  = 24;
 bi.biCompression = 0;
 bi.biSizeImage  = 0;
 bi.biXPelsPerMeter = 0;
 bi.biYPelsPerMeter = 0;
 bi.biClrUsed  = 0;
 bi.biClrImportant = 0;
   
 bfh.bfType=0x4d42;
 bfh.bfOffBits=sizeof(bfh)+sizeof(BITMAPINFOHEADER);
 bfh.bfSize=bfh.bfOffBits+BM.bmWidth*BM.bmHeight*3;
 bfh.bfReserved1=0;
 bfh.bfReserved2=0;
 
 m_pBMI=(BITMAPINFO*)new char[sizeof(BITMAPINFO)];
    m_pDIBData=(BYTE*)new char[bfh.bfSize-bfh.bfOffBits];
 
 memcpy(m_pBMI,&bi,sizeof(BITMAPINFOHEADER));
 GetDIBits(dc.GetSafeHdc(), (HBITMAP)PBitmap->GetSafeHandle(), 0l, (DWORD)bi.biHeight,
  (LPVOID)m_pDIBData,(LPBITMAPINFO)m_pBMI, (DWORD)DIB_RGB_COLORS);
  CFile file;
 if(!file.Open(m_FileName,CFile::modeCreate|CFile::modeWrite))
 {
  MessageBox("error!");
  return;
 }
 file.Write(&bfh,sizeof(bfh));
 file.Write(m_pBMI,sizeof(BITMAPINFOHEADER));
 file.Write(m_pDIBData,BM.bmWidth*BM.bmHeight*3);
 file.Close();
 delete m_pBMI;
 delete m_pDIBData;


}

其实横简单吧!在本站的GetPicture软件中有源代码.

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p> <span style="font-size:14px;color:#337FE5;">【为什么学爬虫?】</span> </p> <p> <span style="font-size:14px;">       1、爬虫入手容易,但是深入较难,如何出高效率爬虫,如何出灵活性高可扩展爬虫都是一项技术活。另外在爬虫过程中,经常容易遇被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿想要数据,这门课程,你都能学!</span> </p> <p> <span style="font-size:14px;">       2、如果是作为一个其他行业开发者,比如app开发,web开发,学习爬虫能让你加强对技术认知,能够开发出更加安全软件和网站</span> </p> <p> <br /> </p> <span style="font-size:14px;color:#337FE5;">【课程设计】</span> <p class="ql-long-10663260"> <span> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 一个完整爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 网络请求:模拟浏览器行为从网上抓取数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据解析:请求下来数据进行过滤,提取我们想要数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据存储:提取数据存储硬盘或者内存中。比如用mysql数据库或者redis等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 那么本课程也是按照这几个步骤循序渐进进行讲解,带领学生完整掌握每个步骤技术。另外,因为爬虫多样性,在爬取过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序灵活性,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 </li> <li class="" style="font-size:11pt;color:#494949;"> Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 通过爬虫进阶知识点我们能应付大量反爬网站,而Scrapy框架作为一个专业爬虫框架,使用他可以快速提高我们编爬虫程序效率和速度。另外如果一台机器不能满足你需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 </p> <p style="font-size:11pt;color:#494949;">   </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 从基础爬虫商业化应用爬虫,本套课程满足您所有需求! </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;background-color:#FFFFFF;color:#337FE5;">【课程服务】</span> </p> <p> <span style="font-size:14px;">专属付费社群+定期答疑</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"><br /> </span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值