用VC++处理24位真彩图转换成256级灰度图怎么弄

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:35:40
麻烦知道的说详细点。我不懂C语言和VC++6.0,最好指出VC++怎么操作,多点中文解释,谢谢了,万分感谢!(我是新号,只有25分,有的话,我都可以全部给)

还是先熟悉了VC++吧!

关于图像处理方面的内容建议看看:图像处理程序设计(杨淑莹)清晰版+源码

#include <windows.h>
BOOL BMP24to8(char *szSourceFile,char *szTargetFile);

int main(int argc,char* argv[])
{
//调用这个函数直接把24位真彩色灰度化
BOOL stat=BMP24to8("c://source.bmp","c://target.bmp");
return 0;
}
BOOL BMP24to8(char *szSourceFile,char *szTargetFile)
{
HANDLE hSourceFile=INVALID_HANDLE_VALUE;
HANDLE  hTargetFile=INVALID_HANDLE_VALUE;
DWORD dwSourceSize=0,dwTargetSize=0;
PBYTE pSource=NULL,pTarget=NULL;
hSourceFile=CreateFile(szSourceFile,GENERIC_READ,FILE_SHARE_READ,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hSourceFile==INVALID_HANDLE_VALUE)
return FALSE;
dwSourceSize=GetFileSize(hSourceFile,NULL);
pSource=(PBYTE)VirtualAlloc(NULL,dwSourceSize,MEM_COMMIT,PAGE_READWRITE);
//分