标签:完全 文件头 width code ESS 判断 short type 知识点
VC++数字图像处理 杨淑滢
本文对该老师的代码进行总结,代码小白顺便补充一下自己比较困惑的知识点,方便后续复习。
位图文件头结构BITMAPFILEHEADER |
位图信息头结构BITMAPINFOHEADER |
位图颜色表RGBQUAD |
位图像素数据部分 |
在c++中如果用typedef的话:
struct Student
{
int a;
}stu1;//stu1是一个变量
typedef struct Student2
{
int a;
}stu2;//stu2是一个结构体类型=struct Student
即在C++中用typedef相当于重命名操作,相当于对struct后面的变量重新命名。
windef.h——基本型态定义
winbase.h——Kernel函数
wingdi.h——图形设备接口函数
winuser.h——使用者接口函数
其中这里主要使用的是第一个应用:基本形态定义,这里面定义了宏,方便后面的使用。
1 typedef unsigned long DWORD; 2 typedef int BOOL; 3 typedef unsigned char BYTE; 4 typedef unsigned short WORD; 5 typedef float FLOAT;
于是可以将BMP图像的格式用代码的方式展现出来
位图文件头:
1 typedef struct tagBITMAPFILEHEADER 2 { 3 WORD bftype;//表示2个字节,16位的短整数,用来判断是否为位图文件类型 4 DWORD bfsize;//表示4个字节,位图文件的大小。 5 WORD bfReaserved1;//位图文件的保留字,必须为0. 6 WORD bfReaserved2;//位图文件的保留字,必须为0 7 DWORD bfOffBits;//表示数据的起始位置 8 } BITMAPFILEHEADER;
位图信息头:
typedef struct tagBITMAPINFOHEADER { DWORD biSize;//本结构所占用字节数 LONG biWidth;//位图的宽度,以像素为单位 LONG biHeight;//位图的高度,以像素为单位 WORD biPlanes;//目标设备的级别,必须为1 WORD biBitCount;//每个像素所需的位数,1、4、8、24 DWORD biCompression;/*位图压缩类型,必须为0(不压缩)、1(BI_RLE8压缩类型)、2(BI_RLE4压缩类型)之一*/ DWORD biSizeImage;//位图的大小,以字节为单位 LONG biXPelsPerMeter;//位图水平分辨率,每米像素数 LONG biYPelsPerMeter;//位图垂直分辨率,每米像素数 DWORD biClrUsed;//位图实际使用的颜色表的颜色数 DWORD biClrImportant;//位图显示过程中重要的颜色数 }BITMAPINFOHEADER;
颜色表:
typedef struct tagRGBQUAD { BYTE rgbBlue;//蓝色的亮度(0~255) BYTE rgbGreen;//绿色 BYTE rgbRed;//红色 BYTE rgbReserved;//保留,必须为0 }RGBQUAD;
把结构体构造结束之后,来构造BMP文件的类:
标签:完全 文件头 width code ESS 判断 short type 知识点
原文地址:https://www.cnblogs.com/liutonghao/p/9757970.html