http://community.csdn.net/Expert/topic/4794/4794983.xml?temp=.6176569一bmp图片,要去掉其它所有色素(B 和 G),只剩下红色(R)因为不懂图片处理,时间有比较急,所以求大侠帮忙了,
分不够的话再加200,望给出完整的函数,最好是程序,[email protected]

解决方案 »

  1.   


    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;
    RGBQUAD pal[256];
    BYTE *data; fstream file;
             file.open( "图片名.bmp", ios::nocreate|ios::in|ios::binary );
    if( !file ) return;
    file.read( (char*)&bfh, sizeof(bfh) );
    file.read( (char*)&bih, sizeof(bih) );
    file.read( (char*)pal, sizeof(pal) );
    long width = (bih.biWidth+3)/4*4;
    data = new BYTE[width*bih.biHeight];
    file.read( (char*)data, width*bih.biHeight );
    file.close(); long i, j, k=0;
    for( i=bih.biHeight-1; i>=0; i-- )
    {
    for( j=0; j<bih.biWidth; j++ )
    {
    BYTE& r = pal[data[i*width+j]].rgbRed;
    BYTE& g = pal[data[i*width+j]].rgbGreen;
    BYTE& b = pal[data[i*width+j]].rgbBlue;
    if( r || g!=255 || b ) //这是遇到绿色就忽略
    pBits[k] = 0x8000 | ((r&0xf8)<<7) | ((g&0xf8)<<2) | (b>>3);
    k++;
    }
    }
    delete[] data;====================结帖子===================