【正文】
unt[i]=0;SHisPixels[i]=;}for(i=0;i 256*N;i++){Pixels[i]=0;}for(i=0;i N;i++){count[imgData[i]]++;}for(i=0;i 256;i++){k=0;for(j=0;j N;j++){if(imgData[j]==i){Pixels[i*256+k]=j;k++;}}}SHisPixels[0]=((double)count[0]/N);for(i=1;i 256;i++){SHisPixels[i]=SHisPixels[i1]+((double)count[i]/N);}for(i=0;i 256;i++){for(j=0;j count[i];j++){imgData[Pixels[i*256+j]]=int(SHisPixels[i]*255+);}}}int ReadFileHeader(BITMAPFILEHEADER*bmfh){FILE*dataFile;dataFile=fopen(,r);if(fread(amp。bmihbiHeight,sizeof(LONG),1,dataFile)!=1){printf(Can not read biHeight in the info header.\n);fclose(dataFile);return1;}if(fread(amp。bmihbiClrImportant,sizeof(DWORD),1,dataFile)!=1){printf(Can not read biClrImportant in the info header.\n);fclose(dataFile);return1;}fclose(dataFile);return 0;}int CreatePalette(RGBQUAD pal){int i;if(sizeof(pal)/sizeof(RGBQUAD)!=256){printf(The size of the palette must be 256.\n);return1;}for(i=0;i 256;i++){pal[i].rgbBlue=i;pal[i].rgbGreen=i;pal[i].rgbRed=i;pal[i].rgbReserved=0;}return 0;}int ReadPixelData(BYTE*imgData){BYTE*data;FILE*dataFile;DWORD dwLineBytes;dwLineBytes=GetLineBytes(,);data=(BYTE*)malloc(dwLineBytes**sizeof(BYTE));dataFile=fopen(,rb);fseek(dataFile,SEEK_SET);if(fread(data,dwLineBytes**sizeof(BYTE),1,dataFile)!=1){printf(Can not read the pixel data.\n);free(data);fclose(dataFile);return1;}memcpy(imgData,data,dwLineBytes**sizeof(BYTE));free(data);fclose(dataFile);return 0;}LONG GetLineBytes(int imgWidth,int bitCount){return(imgWidth*bitCount+31)/32*4;}int SaveAsImage(char*filepath){FILE*dataFile;RGBQUAD pal[256];int i;DWORD dwLineBytes;dwLineBytes=GetLineBytes(,);