#includestdio.h#includestdlib.h#includestring.h#includemalloc.h#includectype.h#includeprocess.h#includewindows.hintbitmapToGray(char*OriginalBMP,char*ResultBMP);intmain(){bitmapToGray(E:\\xljFile\\pictureProcessing\\LONGJIANG.bmp,E:\\xljFile\\pictureProcessing\\LONGJIANG2.bmp);return0;}intbitmapToGray(char*OriginalBMP,char*ResultBMP){unsignedchar*BMP24Image,*BMP8Image;BITMAPFILEHEADERfh;BITMAPINFOHEADERih;//RGBQUADColor[256];//BYTECTemp[3];//ÑÕÉ«·ÖÁ¿intRow,Col,nCol;inti,j,k;FILE*f,*p;BMP24Image=(unsignedchar*)calloc(2000*2000,sizeof(unsignedchar));BMP8Image=(unsignedchar*)calloc(1000*1000,sizeof(unsignedchar));if((f=fopen(OriginalBMP,rb))==NULL){printf(open%serror,pleasecheck\n);return0;}fread(&fh,sizeof(BITMAPFILEHEADER),1,f);if(fh.bfType!='MB'){printf(ThisisnotaBMPpicture\n);return0;}fh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);//+sizeof(RGBQUAD)*256;fread(&ih,sizeof(BITMAPINFOHEADER),1,f);Row=ih.biHeight;Col=ih.biWidth;Col=Col/4*4;//nCol=Col*4/4*4;//ɨÃè¿í¶Èih.biBitCount=8;//¸Ä±äÏñËØλÊý´óС£¬8룬256É«fread(BMP24Image,sizeof(unsignedchar),Row*Col,f);for(i=0;iRow;i++){for(j=0;jCol;j++){if(BMP24Image[i*Col+j]128)BMP8Image[i*Col+j]=255;elseBMP8Image[i*Col+j]=100;//for(k=0;k3;k++)//{//CTemp[k]=BMP24Image[i*nCol+j*3+k];//}//BMP8Image[i*Col+j]=CTemp[2]*0.299+CTemp[1]*0.587+CTemp[0]*0.114;//ת»¯¹«Ê½}}fclose(f);if((p=fopen(ResultBMP,wb))==NULL){printf(opensavefileerror\n);return0;}//for(i=0;i256;i++)//µ÷É«°å//{//Color[i].rgbBlue=i;//Color[i].rgbGreen=i;//Color[i].rgbRed=i;//Color[i].rgbReserved=0;//}fwrite(&fh,sizeof(BITMAPFILEHEADER),1,p);fwrite(&ih,sizeof(BITMAPINFOHEADER),1,p);//fwrite(Color,sizeof(RGBQUAD),256,p);fwrite(BMP8Image,sizeof(unsignedchar),Row*Col,p);fclose(p);return0;}