解决方案

【图像处理】CImage类的简单应用

seo靠我 2023-09-24 01:47:36

CImage类的介绍与使用

CImage类是ATL和MFC共用的一个类,其头文件为atlimage.h,主要用于图片文件的打开,显示与保存。这里需要注意的是,在VS2010和VS2012的MFC编程中,SEO靠我不需要将头文件包含进来。MFC中要使用CImage类,必须先将头文件包含进来,可以包含在当前代码的CPP文件中,也可以包含在所属类的头文件中,不过最好还是包含在工程的stdafx.h文件中。CImagSEO靠我e总共有39个成员函数。具体函数介绍,请查阅MSDN。

彩色图像转换成8位灰度图像

将一张普通彩色图像转换成8位灰度图像,需要调用灰度图像的调色板来处理,且需要调用CImage::IsIndexed来判断SEO靠我是否使用颜色表,若是则修改颜色表,否则直接对像素对颜色值进行处理。

void CImageDlg::TurnToGray(CImage *img,CImage *newimg) {intSEO靠我 width=img->GetWidth();int height=img->GetHeight();COLORREF pixel;RGBQUAD ColorTable[256];for (int iSEO靠我 = 0; i < 256; ++i){ColorTable[i].rgbBlue = ColorTable[i].rgbGreen = ColorTable[i].rgbRed = i;}newimSEO靠我g->SetColorTable(0, 256, ColorTable);byte* pDataDst = (byte*)newimg->GetBits();int pitchDst = newimgSEO靠我->GetPitch();int bitCountDst = newimg->GetBPP() / 8;if (bitCountDst != 1)return;int r,g,b,avg;for(inSEO靠我t i=0;i<width;i++){for(int j=0;j<height;j++){pixel=img->GetPixel(i,j);r=GetRValue(pixel);g=GetGValueSEO靠我(pixel);b=GetBValue(pixel);avg=(r+g+b)/3;*(pDataDst+pitchDst*j+i*bitCountDst)=avg;}} }MFC对话框SEO靠我显示图像void CImageDlg::ShowImage(CImage image,int id) { //一个参数是对象srcPng或者是destPng,另一个参数是控件IDhdcSEO靠我 = ::GetDC(GetDlgItem(id)->GetSafeHwnd());GetDlgItem(id)->GetClientRect(rect);image.Draw(hdc , rect)SEO靠我;::DeleteDC(hdc); }打开一张图像并显示void CEx_ImageView::OnFileOpen() //Cyan:添加 {// TODO: 在此添SEO靠我加命令处理程序代码CString strFilter;CSimpleArray<GUID>aguidFileTypes;HRESULT hResult; //获取CImage支持的图像文件的过滤字符串SEO靠我hResult=m_Image.GetExporterFilterString(strFilter,aguidFileTypes,_T("All Image Files"));if(FAILED(hRSEO靠我esult)){MessageBox(_T("GetExporterFilter调用失败!"));return;}CFileDialog dlg(TRUE,NULL,NULL,OFN_FILEMUSTSEO靠我EXIST,strFilter);if(IDOK!=dlg.DoModal())return;m_Image.Destroy();//将外部图像文件装载到CImage对象中hResult=m_ImagSEO靠我e.Load(dlg.GetFileName());if(FAILED(hResult)){MessageBox(_T("调用图像文件失败!"));return;}//设置主窗口标题栏内容CStrinSEO靠我g str;str.LoadString(AFX_IDS_APP_TITLE);AfxGetMainWnd()->SetWindowTextW(str+_T("-")+dlg.GetFileName(SEO靠我));Invalidate();//强制调用OnDraw函数 }
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2