void GrayTrans::ColorToGray()
{
if (m_nBitCount==8)
{
return ;
}
if (m_pImgDataOut!=NULL)
{
delete []m_pImgDataOut;
m_pImgDataOut=NULL;
}
if (m_lpColorTableOut!=NULL)
{
delete []m_lpColorTableOut;
m_lpColorTableOut=NULL;
}
m_nBitCountOut=8;
m_nColorTableLengthOut=ComputeColorTableLength(m_nBitCountOut);
if(m_nColorTableLengthOut!=0)
{
m_lpColorTableOut=new RGBQUAD[ m_nColorTableLengthOut];
for ( int i=0; i<m_nColorTableLengthOut; i++)
{
m_lpColorTableOut[i].rgbBlue=i;
m_lpColorTableOut[i].rgbGreen=i;
m_lpColorTableOut[i].rgbRed=i;
m_lpColorTableOut[i].rgbReserved=0;
}
}
int pixelByteIn=3;
int lineByteIn=(m_imgWidth*pixelByteIn+3)/4*4;
m_imgWidthOut=m_imgWidth;
m_imgHeightOut=m_imgHeight;
int lineByteOut=(m_imgWidth*m_nBitCountOut/8+3)/4*4;
m_pImgDataOut=new unsigned char[lineByteOut*m_imgHeight
vc将彩色图像转换为灰度图像
最新推荐文章于 2022-12-02 14:47:56 发布
这段代码展示了如何使用VC++将彩色图像转换为灰度图像。通过计算红、绿、蓝三个通道的加权平均值,每个像素被转换为对应的灰度值。转换过程中涉及到内存分配、颜色表创建以及图像宽度和高度的处理。
摘要由CSDN通过智能技术生成