我需要用C语言按文件方式打开一个图片,按照一定约定转存为一个unsigned char 型数组中,现在的问题是我要知道它的长高,在网上搜了一圈也没找到答案,请教大家

解决方案 »

  1.   

    BMP文件的头是由一个BITMAPFILEHEADER 紧跟着一个 BITMAPINFOHEADER构成的,
    两个结构如下:typedef struct tagBITMAPFILEHEADER {
      WORD bfType; 
      DWORD bfSize; 
      WORD bfReserved1; 
      WORD bfReserved2; 
      DWORD bfOffBits; 
    } BITMAPFILEHEADER; 
    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; 这是在VC里表示的结构LONG 是 long
    DWORD 是 unsgined long
    WORD 是 unsigned short
      

  2.   

    打开BMP文件后按顺序把这两个结构读出来,biWidth就是宽度,biHeight就是高度,不知道你是不是要读BMP。
      

  3.   

    按顺序读???
    biheight在第几位??
      

  4.   

    先读一个BITMAPFILEHEADER,再读一个BITMAPINFOHEADER,BITMAPINFOHEADER里面的biWidth和biHeight就是宽和高。
      

  5.   

    呵呵,我是比较初级的
    我的意思是读图片文件文件给结构体的成员赋值,是按照定义的顺序依次赋值么?
    比如
    fread(buffertemp,65535,1,bmpfile);
    bitmapfileheader.bftype = buffertemp[0];
    bitmapfileheader.bfsize = buffertemp[1];
    …………
    是这种形式么?
      

  6.   

    http://bbs.bc-cn.net/thread-137382-1-1.html
      

  7.   

    fread(buffertemp,65535,1,bmpfile); 
    memcpy( &bitmapfileheader, buffertemp, sizeof( BITMAPFILEHEADER ) );
    memcpy( &bitmapinfoheader, buffertemp + sizeof( BITMAPFILEHEADER ), sizeof( BITMAPINFOHEADER ) );
    ...........
    是这种形式....