#include<stdio.h>
#include<windows.h>
void main()
{
   FILE *fp=fopen("lenaRGB.raw","rb");
   if(fp==NULL)
   {
       printf("can not open lena.raw\n");
   return ;
   }
   unsigned char *image[1000];
   for(int i=0;i<512;i++)
   {
       image[i]=new unsigned char[512];
   fread(image[i],1,512,fp);
   }
   fclose(fp);
   FILE *fp1=fopen("new_lena.bmp","wb");
   if(fp1==NULL)
   {
       printf("can not open new.bmp\n");
   return ;
   }
   int imageW=512;
   int imageH=512;
   int storeW=imageW;
   if(storeW%4!=0)
   storeW+=(4-storeW%4);
   BITMAPFILEHEADER bh;//位图文件头
   //bh.bfType=(WORD)('M'<<8|'B');
   bh.bfType=(UINT)"BM";
   bh.bfReserved1=0;
   bh.bfReserved2=0;
   bh.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256+storeW*imageH;
   bh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256;
   BITMAPINFOHEADER bInfo;
   bInfo.biSize=sizeof(BITMAPINFOHEADER);
   bInfo.biWidth=imageW;
   bInfo.biHeight=imageH;
   bInfo.biPlanes=1;
   bInfo.biBitCount=8;
   bInfo.biCompression=BI_RGB;
   bInfo.biSizeImage=storeW*imageH;
   bInfo.biXPelsPerMeter=0;
   bInfo.biYPelsPerMeter=0;
   bInfo.biClrUsed=256;
   bInfo.biClrImportant=0;
   fwrite(&bh,sizeof(BITMAPFILEHEADER),1,fp1);
   fwrite(&bInfo,sizeof(BITMAPFILEHEADER),1,fp1);
   RGBQUAD rgb;
   rgb.rgbReserved=0;
   for(i=0;i<256;i++)
   {
       rgb.rgbBlue=rgb.rgbGreen=rgb.rgbRed=i;
   fwrite(&rgb,sizeof(RGBQUAD),1,fp1);
   }
   for(i=0;i<256;i++)
   {
       fwrite(image[511-i],1,512,fp1);
   }
   fclose(fp1);
}