首页 | 文章中心 | 下载中心 | 本站特供 | 软硬件结合论坛 | 
您现在的位置: 中国软硬件结合技术网 >> 文章中心 >> 软件技术 >> C++程序设计 >> 正文 用户登录 新用户注册
C中 如何读取BMP格式 图片            【字体:
C中 如何读取BMP格式 图片
作者:佚名    文章来源:    点击数:    更新时间:2007-5-16

 #include   <stdio.h>  
   
  #define   FAR                                   far  
  #define   NEAR                                 near  
  #define   VOID   void  
  typedef   char   CHAR;  
  typedef   short   SHORT;  
  typedef   long   LONG;  
  typedef   unsigned   long               DWORD;  
  typedef   int                                   BOOL;  
  typedef   unsigned   char               BYTE;  
  typedef   unsigned   short             WORD;  
   
  typedef   struct   tagBITMAPFILEHEADER   {  
                  WORD         bfType;  
                  DWORD       bfSize;  
                  WORD         bfReserved1;  
                  WORD         bfReserved2;  
                  DWORD       bfOffBits;  
  }   BITMAPFILEHEADER,   FAR   *LPBITMAPFILEHEADER,   *PBITMAPFILEHEADER;  
   
  typedef   struct   tagBITMAPINFOHEADER{  
                  DWORD             biSize;  
                  LONG               biWidth;  
                  LONG               biHeight;  
                  WORD               biPlanes;  
                  WORD               biBitCount;  
                  DWORD             biCompression;  
                  DWORD             biSizeImage;  
                  LONG               biXPelsPerMeter;  
                  LONG               biYPelsPerMeter;  
                  DWORD             biClrUsed;  
                  DWORD             biClrImportant;  
  }   BITMAPINFOHEADER,   FAR   *LPBITMAPINFOHEADER,   *PBITMAPINFOHEADER;  
   
  void   main()  
  {  
  FILE   *fp;  
  int   i,j,SizeFileHeader,SizeInfoHeader;  
  int   MapHeight,MapWidth,DataNumPerLine;  
  BITMAPFILEHEADER   fileheader;  
  BITMAPINFOHEADER   infoheader;  
  unsigned   char**data;  
   
  fp=fopen("d:\\bmp.bmp","rb");  
  SizeFileHeader=sizeof(BITMAPFILEHEADER);  
  SizeInfoHeader=sizeof(BITMAPINFOHEADER);  
  fread(&fileheader,SizeFileHeader,1,fp);  
  fread(&infoheader,SizeInfoHeader,1,fp);  
  MapHeight=infoheader.biHeight;  
  MapWidth=infoheader.biWidth;  
  DataNumPerLine=(MapWidth+3)/4*4;  
   
  data=(unsigned   char**)malloc(MapHeight*sizeof(unsigned   char*));  
  for(i=0;i<MapWidth;i++)  
  data[i]=(unsigned   char*)malloc(DataNumPerLine*sizeof(unsigned   char));  
  for(i=0;i<256*4;i++)  
  fgetc(fp);  
  for(i=0;i<MapHeight;i++)  
  fread(data[i],DataNumPerLine,1,fp);  
  fclose(fp);  
   
  }

 

文章录入:xc0213031    责任编辑:Polylove 
  • 上一篇文章: 舍弃浮躁, 50条重要的C++学习建议

  • 下一篇文章: 没有了
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
          最新热点       最新推荐       相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)