// 头文件 //#include "atlimage.h" //CImage *image = new CImage(); if( image ) { delete image; image = NULL; } image = new CImage(); // 载入图像 image->Load( "c://test.bmp" ); if( image ) { int width = image->GetWidth(); int height = image->GetHeight(); int stride = abs(image->GetPitch()); byte* pDst = new byte[stride*height]; byte* pRealData = NULL; pRealData = (byte*)image->GetBits(); int pit = image->GetPitch(); int bitCount = image->GetBPP()/8; memset( pDst, 0, abs(pit)*height ); for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { int grayVal = (int)(int)(*(pRealData + pit*y + x*bitCount))*0.3 + (int)(int)(*(pRealData + pit*y + x*bitCount +1))*0.59 + (int)(int)(*(pRealData + pit*y + x*bitCount +2))*0.11; // 彩色图转灰度图 //*(pRealData + pit*y + x*bitCount) = grayVal; //*(pRealData + pit*y + x*bitCount +1) = grayVal; //*(pRealData + pit*y + x*bitCount +2) = grayVal; } } //memcpy( pRealData + pit*(height-1) , pDst, abs(pit)*height ); // 保存图像 image->Save( "c://test2.bmp"); //image->ReleaseGDIPlus(); //image->ReleaseGDIPlus(); //image->Destroy(); //delete image; delete[] pDst; 使用CImage类存取图像真方便。