×

数字图像处理作业

消耗积分:2 | 格式:doc | 大小:2266KB | 2017-04-07

lilppp

分享资料个

用C语言实现实现图片的显示,图片的保存,以及图片的缩放和平移

  void CImgProcessDlg::OnBnClickedButton2() //保存图像数据

  {

  // TODO: 在此添加控件通知处理程序代码

  //计算整副图像的字节数

  UINT size = (m_nWidth*m_nBitCount/8+3)/4*4*m_nHeight;

  //开辟内存空间,存放图像数据

  BYTE * pdate = new BYTE[size];

  //拷贝图像数据

  memcpy(pdate,m_pDibData,size);

  //填充位图文件信息头

  BITMAPFILEHEADER bitmapfileheader;

  bitmapfileheader.bfType=0x4d42;

  bitmapfileheader.bfReserved1=bitmapfileheader.bfReserved2 = 0;

  bitmapfileheader.bfSize = size;

  bitmapfileheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof

  (BITMAPINFOHEADER)+ GetColorTabLength(m_nBitCount)*sizeof(RGBQUAD);

  CFileDialog dlg(false,_T(“BMP”),_T(“*.bmp”),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,

  _T(“*.bmp|*.bmp|*.*|*.*|”));

  if (dlg.DoModal()!=IDOK)

  {

  return;

  }

  CFile file;

  //获得保存的路径

  CString ss=dlg.GetPathName();

  //打印出保存的路径

  MessageBox(ss);

  if(file.Open(ss, CFile::modeCreate |CFile::modeWrite))//创建,写的方式打开文件

  { //将文件信息头,信息头,图像数据都存入文件当中

  file.Write(&bitmapfileheader,sizeof(BITMAPFILEHEADER));

  file.Write(m_pBitmapInfo,sizeof(BITMAPINFOHEADER));

  if(m_nBitCount != 24)

  {

  file.Write(m_pColorTab,256*sizeof(RGBQUAD));

  }

  file.Write(pdate,size);

  file.Close();

  }

  this-》SetDlgItemTextA(IDC_EDIT,“保存成功”);

  //释放刚才分配的区域

  delete [] pdate;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !