怎样将一幅24位的图像转化为8位的。。???

来源:百度知道 编辑:UC知道 时间:2024/09/12 22:33:27
将一幅24位的图转化为一个256*258的8位的.BMP图像,用VC代码怎么实现啊??
能不能说的详细点,我不太明白

void CZhaweiDoc::Colortogrey()
{
CDib *bm=new CDib();
bm->m_pBMI=(BITMAPINFO *) new char[40+256*4];
bm->m_pBMI->bmiHeader.biSize=40;
bm->m_pBMI->bmiHeader.biWidth=width;
bm->m_pBMI->bmiHeader.biHeight=height;
bm->m_pBMI->bmiHeader.biPlanes=1;
bm->m_pBMI->bmiHeader.biCompression=BI_RGB;
bm->m_pBMI->bmiHeader.biXPelsPerMeter=0;
bm->m_pBMI->bmiHeader.biYPelsPerMeter=0;
bm->m_pBMI->bmiHeader.biClrUsed=0;
bm->m_pBMI->bmiHeader.biClrImportant=0;
bm->m_pBMI->bmiHeader.biBitCount=8;
bm->m_pBMI->bmiHeader.biSizeImage=(((width*8)+31)/32*4)*height;

for (int i=0;i<256;i++)
{
bm->m_pBMI->bmiColors[i].rgbBlue=i;
bm->m_pBMI->bmiColors[i].rgbGreen=i;
bm->m_pBMI->bmiColors[i].rgbRed=i;
bm->m_pBMI->bmiColors[i].rgbReserved=0;
}
int lenofbmp=(((width*8)+31)/32*4)*hei