#pragma pack 在BITMAP结构体定义中的使用
块名称
|
对应Windows结构体定义
|
大小(Byte)
|
文件信息头 | BITMAPFILEHEADER | 14 |
位图信息头 | BITMAPINFOHEADER | 40 |
RGB颜色阵列 | BYTE* | 由图像长宽尺寸决定 |
定义BITMAP 文件信息头,位图信息头的 代码 如下:
#pragma pack(push) /* 将当前pack设置压栈保存;把原来对齐方式设置压栈
*/
#pragma pack(1) /*
设新的对齐方式设置为一个字节对齐,必须在结构体定义之前使用,这是为了让结构体中各成员按1字节对齐 */
typedef struct tagBITMAPFILEHEADER { /* bmfh */ //文件信息头
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER { /* bmih */ //位图信息头
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
} BITMAPINFOHEADER;
#pragma pack(pop) /* 恢复先前的pack设置;作用:恢复对齐状态
*/
---------------------------------------------------------------------------------
注意:一定要让结构体中各成员按1字节对齐,否则就不能保证文件信息头的大小为14字节,位图信息头为40字节了!
加入push和pop可以使对齐恢复到原来状态
最新文章
- PHP环境的搭建(Apache)
- 纯window下VMware 安装 OS X El Capitan 原版映像【未完待续】
- 入手Cubieboard2之制作最小Linux系统
- hdu1285 拓扑序
- Dubbo 通过Spring 配置具体启动服务
- 矩阵取数游戏 NOIP 2007
- linux下启动和关闭网卡命令
- 高性能、高流量Java Web站点打造的22条建议
- 浅谈数据库系统中的cache
- Bootstrap3.0学习第八轮
- STC-单片机控制系统
- Linux下Jdk的安装和jdk环境变量的设置
- 在windows64位Anaconda3环境下安装XGBoost
- 计算机网络之IP协议族
- 移动开发常用head部分
- Excel动态图表
- 【python35小工具】b站弹幕保存
- mybatis逆向工程之maven工程
- linux的convert图片处理工具
- Android 实现简单 倒计时60秒,一次1秒