BITMAP,BITMAPINFOHEADER,PBITMAPINFO,HBITMAP,BITMAPFILEHEADER之间的关系
来源:互联网 发布:知天下资源吧进不去 编辑:程序博客网 时间:2024/04/30 08:49
在Windows系统中,以BMP 为扩展名的文件都是DIB文件,保存于磁盘中的DIB文件由4部分所组成:位图文件头、位图信息头、颜色表项和位图图象数据。管理位图文件头、位图信息头、颜色表项的3个结构分别为 BITMAPFILEHEADER,BITMAPINFOHEADER,和RGBQUAD,其中RGBQUAD和BITMAPINFOHEADER结构又可以通过BITMAPINFO来组合。图1-1 展示了DIB文件的数据组织
¬
BITMAPFILEHEADER结构的定义如下
typedef struct tag BITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}BITMAPFILEHEADER;
其中bfType说明文件为一个位图文件,表示位图的ASCII码为BM,其16进制表示为0x4D42。bfSize 表示以字节为单位的文件大小。bfReserved1和bfReserved2一般不采用,其值均为0。BfOffBits表示从位图文件头开始到位图数据段的字节总数,即字节偏移量。
BITMAPINFOHEADER结构的定义如下:
typedef struct tag BITMAPINFOHEADER{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFODEADER;
其中,biSize 表示该结构的大小。biWidth 表示以像素为单位的位图宽度。biHeight表示相应的高度,biPlanes 表示目标设备的位平面数,置为1。biBitCount 表示位图每个像素的位数,可能为1、4、8、或24。iCompression 表示位图的被压缩类型。若位图未被压缩,则该值为0;若为1,则表示采用RLE(Run Length Encoded)8压缩;若位2,则表示采用RLE4压缩。biSizeImage 表示被压缩位图的字节数。biXPelsPerMeter 表示目标设备的水平分辨率,biYPelsPerMeter表示目标设备的垂直分辨率。biClrUsed 表示位图实际使用的颜色数。biClrImportant 指对于显示该位图比较重要的颜色索引的个数,若该值尾0,则表示所有的颜色都是重要的。
RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD{
BYTE rgbBLUE;
BYTE rgbGREEN;
BYTE rbgRED;
BYTE rgbReserved;
}RGBQUAD;
其中,rgbBLUE、 rgbGREEN、rbgRED分别表示蓝、绿、红分量;rgbReserved的值为0。
BITMAPINFO结构把BITMAPINFOHEADER结构和一张颜色表结合在一起,其定义如下:
tyepdef struct tagBITMAPINFO{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}BITMAPINFO;
事实上,只有1、4、8位位图才有颜色表项。24位位图没有颜色表项,位图头信息后紧跟位图数据。
¬
BITMAPFILEHEADER结构的定义如下
typedef struct tag BITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}BITMAPFILEHEADER;
其中bfType说明文件为一个位图文件,表示位图的ASCII码为BM,其16进制表示为0x4D42。bfSize 表示以字节为单位的文件大小。bfReserved1和bfReserved2一般不采用,其值均为0。BfOffBits表示从位图文件头开始到位图数据段的字节总数,即字节偏移量。
BITMAPINFOHEADER结构的定义如下:
typedef struct tag BITMAPINFOHEADER{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFODEADER;
其中,biSize 表示该结构的大小。biWidth 表示以像素为单位的位图宽度。biHeight表示相应的高度,biPlanes 表示目标设备的位平面数,置为1。biBitCount 表示位图每个像素的位数,可能为1、4、8、或24。iCompression 表示位图的被压缩类型。若位图未被压缩,则该值为0;若为1,则表示采用RLE(Run Length Encoded)8压缩;若位2,则表示采用RLE4压缩。biSizeImage 表示被压缩位图的字节数。biXPelsPerMeter 表示目标设备的水平分辨率,biYPelsPerMeter表示目标设备的垂直分辨率。biClrUsed 表示位图实际使用的颜色数。biClrImportant 指对于显示该位图比较重要的颜色索引的个数,若该值尾0,则表示所有的颜色都是重要的。
RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD{
BYTE rgbBLUE;
BYTE rgbGREEN;
BYTE rbgRED;
BYTE rgbReserved;
}RGBQUAD;
其中,rgbBLUE、 rgbGREEN、rbgRED分别表示蓝、绿、红分量;rgbReserved的值为0。
BITMAPINFO结构把BITMAPINFOHEADER结构和一张颜色表结合在一起,其定义如下:
tyepdef struct tagBITMAPINFO{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}BITMAPINFO;
事实上,只有1、4、8位位图才有颜色表项。24位位图没有颜色表项,位图头信息后紧跟位图数据。
- BITMAP,BITMAPINFOHEADER,PBITMAPINFO,HBITMAP,BITMAPFILEHEADER之间的关系
- BITMAP,BITMAPINFOHEADER,PBITMAPINFO,HBITMAP,BITMAPFILEHEADER
- Bitmap BITMAPFILEHEADER BITMAPINFOHEADER
- IPicture、BITMAP、HBITMAP和CBitmap的关系
- IPicture、BITMAP、HBITMAP和CBitmap的关系
- IPicture、BITMAP、HBITMAP和CBitmap的关系
- IPicture、BITMAP、HBITMAP和CBitmap的关系
- IPicture、BITMAP、HBITMAP和CBitmap的关系
- CBitmap HBITMAP BITMAP 关系
- 位图BITMAPINFOHEADER 与BITMAPFILEHEADER
- 位图BITMAPINFOHEADER 与BITMAPFILEHEADER:
- 位图BITMAPINFOHEADER 与BITMAPFILEHEADER
- 【引用】(转)IPicture、BITMAP、HBITMAP和CBitmap的关系
- IplImage CBitmap HBITMAP BITMAP之间的相互转换
- IplImage、CBitmap、HBITMAP、BITMAP之间的相互转换
- IplImage CBitmap HBITMAP BITMAP之间的相互转换
- IplImage CBitmap HBITMAP BITMAP之间的相互转换
- HBitmap、Bitmap、CBitmap之间的区别与联系
- HDU 3996 Gold Mine
- Ipad2模拟器及 图标下载
- 开发IDE工具的公司ReSharper的Ilya Ryzhenkov总结了使用var的一些好处
- Linux中的远程连接 SSH and VNC图形模式
- 使用TimeJob
- BITMAP,BITMAPINFOHEADER,PBITMAPINFO,HBITMAP,BITMAPFILEHEADER之间的关系
- I2C-client-devices-drivers-writing
- R12 如何转移ASSET BOOK从一个组织A到另一个组织B
- 求字符123456每一位数字相加
- 详解指针数组,数组指针,函数指针,以及堆中的分配
- InfoPath设计优化
- 怎样理解as C#的中的作用
- 团购网站 商品倒计时的功能
- 出现mysql max-connections问题解决