来源:http://blog.csdn.net/sunny3106/archive/2007/08/27/1761106.aspx
/****************************************************************
*
* 函数名称: Convert256toGray(LPSTR lpDIB,LPSTR lpDIBBits,
long lWidth,long lHeight)
* 参数: LPSTR lpDIB 指向dib的指针
LPSTR lpDIBBits 指向dib数据的指针
long lWidth 图像宽度
long lHeight 图像高度
* 返回值: bool
* 功能: 将256色位图转化为灰度图
*
***************************************************************/
bool Convert256toGray(LPSTR lpDIB,LPSTR lpDIBBits,
long lWidth,long lHeight)
{
BYTE * lpSrc; // 指向DIB象素的指针
LONG lLineBytes; // 图像每行的字节数
LPBITMAPINFO lpbmi; // 指向BITMAPINFO结构的指针(Win3.0)
LPBITMAPCOREINFO lpbmc; // 指向BITMAPCOREINFO结构的指针
lpbmi = (LPBITMAPINFO)lpDIB; // 获取指向BITMAPINFO结构的指针(Win3.0)
lpbmc = (LPBITMAPCOREINFO)lpDIB; // 获取指向BITMAPCOREINFO结构的指针
BYTE bMap[256]; // 灰度映射表
// 计算灰度映射表(保存各个颜色的灰度值),并更新DIB调色板
int i,j;
for (i = 0; i < 256; i ++)
{
// 计算该颜色对应的灰度值
/*
bMap[i