如何读入位图(二)

简介: 如何读入位图(二) (2009-03-25 21:25:16) 转载 标签: 杂谈 分类: 数字图像处理 在C语言中没有预定义WORD和DWORD的数据类型,因此我们可以和它们同样字节的数据类型来代替,如下: typedef unsigned...

如何读入位图(二)

(2009-03-25 21:25:16)
标签:

杂谈

分类: 数字图像处理

C语言中没有预定义WORDDWORD的数据类型,因此我们可以和它们同样字节的数据类型来代替,如下:

typedef unsigned short WORD;

typedef unsigned long DWORD;

typedef long LONG;

typedef unsigned char BYTE;

//文件头结构体

typedef struct tagBITMAPFILEHEADER

{ // bmfh

    WORD    bfType;

    DWORD   bfSize;

    WORD    bfReserved1;

    WORD    bfReserved2;

    DWORD   bfOffBits;

}BITMAPFILEHEADER;

//信息头结构体

typedef struct tagBITMAPINFOHEADER

{ // bmih

    DWORD biSize;

    LONG   biWidth;

    LONG   biHeight;

    WORD   biPlanes;

    WORD   biBitCount;

    DWORD biCompression;

    DWORD biSizeImage;

    LONG   biXPelsPerMeter;

    LONG   biYPelsPerMeter;

    DWORD biClrUsed;

    DWORD biClrImportant;

}BITMAPINFOHEADER;

//调色板项结构体

typedef struct tagRGBQUAD

{ // rgbq

    BYTE    rgbBlue;

    BYTE    rgbGreen;

    BYTE    rgbRed;

    BYTE    rgbReserved;

}RGBQUAD;

 

C语言读入文件头:

int ReadFileHeader(char *filepath,BITMAPFILEHEADER *bmfh)

{

       FILE *fp;

       //打开文件

       fp=fopen(filepath,"rb");

       if(!fp)

       {     //如果打开失败

              printf("Can not open the file:%s\n",filepath);

              return -1;

       }

       //读入bfType

       if(fread(&bmfh->bfType,sizeof(WORD),1,fp)!=1)

       {

              printf("Can not read bfType in the file header.\n");

              fclose(fp);

              return -1;

       }

       //读入bfSize

       if(fread(&bmfh->bfSize,sizeof(DWORD),1,fp)!=1)

       {

              printf("Can not read bfSize in the file header.\n");

              fclose(fp);

              return -1;

       }

       //读入bfReserved1

       if(fread(&bmfh->bfReserved1,sizeof(WORD),1,fp)!=1)

       {

              printf("Can not read bfReserved1 in the file header.\n");

              fclose(fp);

              return -1;

       }

       //读入bfReserved2

       if(fread(&bmfh->bfReserved2,sizeof(WORD),1,fp)!=1)

       {

              printf("Can not read bfReserved2 in the file header.\n");

              fclose(fp);

              return -1;

       }

       //读入bfOffBits

       if(fread(&bmfh->bfOffBits,sizeof(DWORD),1,fp)!=1)

       {

              printf("Can not read bfOffBits in the file header.\n");

              fclose(fp);

              return -1;

       }

       //关闭文件指针

       fclose(fp);

       return 0;

}

 

 
相关文章
|
7月前
|
存储 机器学习/深度学习 图形学
位图秘境:解析位图表示法及其在文件系统中的应用(一)
位图秘境:解析位图表示法及其在文件系统中的应用
132 0
|
7月前
|
存储 机器学习/深度学习 算法
位图秘境:解析位图表示法及其在文件系统中的应用(二)
位图秘境:解析位图表示法及其在文件系统中的应用
155 0
|
5月前
|
存储 算法 数据挖掘
【C++】位图
【C++】位图
50 1
|
7月前
|
JSON Java 数据处理
Unity 数据读取|(二)多种方式读取文本文件
Unity 数据读取|(二)多种方式读取文本文件
|
7月前
|
存储 算法 C++
【C++入门到精通】位图 | 位图的实现[ C++入门 ]
【C++入门到精通】位图 | 位图的实现[ C++入门 ]
80 0
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
157 0
将数据从文件中读出并排序
将数据从文件中读出并排序
147 0
Halcon把8位图转换为24位图的方法
Halcon把8位图转换为24位图的方法
483 0