我想取得bmp图的一些简单的信息,如高 宽  等,应该如何去做啊谢谢~~

解决方案 »

  1.   

    BMP文件有个文件头啊typedef struct tagBITMAPFILEHEADER  // bmfh

          WORD   bfType ;        // signature word "BM" or 0x4D42
          DWORD  bfSize ;        // entire size of file
          WORD   bfReserved1 ;   // must be zero
          WORD   bfReserved2 ;   // must be zero
          DWORD  bfOffsetBits ;  // offset in file of DIB pixel bits
    }
    BITMAPFILEHEADER, * PBITMAPFILEHEADER ;
    在WINGDI.H内定义的结构可能与这不完全相同,但在功能上是相同的。第一个注释(就是文字「bmfh」)指出了给这种资料型态的资料变数命名时推荐的缩写。如果在我的程式内看到了名为pbmfh的变数,这可能是一个指向BITMAPFILEHEADER型态结构的指标或指向PBITMAPFILEHEADER型态变数的指标。结构的长度为14位元组,它以两个字母「BM」开头以指明是点阵图档案。这是一个WORD值0x4D42。紧跟在「BM」後的DWORD以位元组为单位指出了包括档案表头在内的档案大小。下两个WORD栏位设定为0。(在与DIB档案格式相似的滑鼠游标档案内,这两个栏位指出游标的「热点(hot spot)」)。结构还包含一个DWORD栏位,它指出了档案中图素位元开始位置的位元组偏移量。此数值来自DIB资讯表头中的资讯,为了使用的方便提供在这里。在OS/2样式的DIB内,BITMAPFILEHEADER结构後紧跟了BITMAPCOREHEADER结构,它提供了关於DIB图像的基本资讯。紧缩的DIB(Packed DIB)开始於BITMAPCOREHEADER:typedef struct tagBITMAPCOREHEADER  // bmch

          DWORD  bcSize ;       // size of the structure = 12
          WORD   bcWidth ;      // width of image in pixels
          WORD   bcHeight ;     // height of image in pixels
          WORD   bcPlanes ;     // = 1
          WORD   bcBitCount ;   // bits per pixel (1, 4, 8, or 24)
    }
    BITMAPCOREHEADER, * PBITMAPCOREHEADER ;
    「core(核心)」用在这里看起来有点奇特,它是指这种格式是其他由它所衍生的点阵图格式的基础。BITMAPCOREHEADER结构中的bcSize栏位指出了资料结构的大小,在这种情况下是12位元组。bcWidth和bcHeight栏位包含了以图素为单位的点阵图大小。尽管这些栏位使用WORD意味著一个DIB可能为65,535图素高和宽,但是我们几乎不会用到那么大的单位。
      

  2.   

    CBitmap bmp;
    BITMAP  bi;
    ...bmp.GetBitmap(&bi);
    // 查看 MSDN 里的 BITMAP 结构说明
      

  3.   

    先读出sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)到pbData
    ((BITMAPINFOHEADER*)(pbData+sizeof(BITMAPFILEHEADER))).biWidth
    biHeight等
      

  4.   

    浏览了以上答案
    就简便性而言
    觉得 qc_jrj() 同学可以得8分
    而我慧眼识英雄可以得12分哈
      

  5.   

    如果你要得到一个位图句柄的信息
    BITMAP bm;
    GetObject(hBmp, sizeof(bm), &bm);