使用CImage將圖片變成黑白

使用CImage的通常方法:
(1) 打開應用程序的stdafx.h文件添加CImage類的包含文件:#include <atlimage.h>
(2) 定義一個CImage類對象,而後調用CImage::Load方法裝載一個外部圖像文件。
(3) 調用CImage::Draw方法繪製圖像。
(4) CImage::Save方法能將一個圖像文件按另外一種格式來保存。

欲將彩色圖變爲黑白圖,能夠將圖片中每一個象素點的RGB值歸一化,即R=G=B。能夠經過兩種方法來實現:
(1)能夠將RGB的值設爲R、G、B中任意一個;
(2)令RGB的值等於(R+G+B)/3。(推薦)

方法二:
將一幅彩色圖片變成黑白圖code

void BmpControl::Exchange(CString fname)   //fname爲欲變換的圖片文件名
{
     CImage *image=new CImage();    //建立CImage對象
     image->Load(fname);  //載入圖片
     COLORREF pixel;      //用於保存象素信息
     int maxY = image->GetHeight(),    //圖片高度
         maxX = image->GetWidth();    //圖片寬度
     byte r,g,b,avg;
     //依次讀取每一個象素點,並做相應的轉換
     for(int x=0;x
     {
         for(int y=0;y
         {
              pixel=image->GetPixel(x,y);  //獲取象素點
              //獲得R、G、B、的值
              r=GetRValue(pixel);
              g=GetGValue(pixel);
              b=GetBValue(pixel);
              //處理象素點
              avg=(int)((r+g+b)/3);
              //寫回圖片
              image->SetPixelRGB(x,y,avg,avg,avg);
         }
     }
     //保存圖片
     image->Save(fname);
}