BMP图像中BITMAPINFOHEADER结构

本文详细介绍了BITMAPINFOHEADER结构的内容,包括各字段的作用和意义。这些字段定义了位图的各种属性,如尺寸、颜色深度及压缩方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typedef struct tagBITMAPINFOHEADER

{

DWORD biSize; //指定结构需要的比特数。这个值不包含在结构的结尾被添上的颜色表或者颜色盒的大小。

LONG biWidth; //指定位图的像素宽度

LONG biHeight; //指定位图的高度。单位是像素。

WORD biPlanes;// Specifiesthe number of planes for the target device. This value must be set to 1.

WORD biBitCount; //指定每像素的比特数(bpp)

DWORDbiCompression;// 对于压缩的视频和YUV格式,该数字是一个FOURCC代码。

DWORD biSizeImage;//位图的大小,单位是比特。对于没有压缩的RGB位图,该数值可以被设置为0

LONGbiXPelsPerMeter;// 规定了该位图的目标设备的水平模式,单位是像素每米

LONGbiYPelsPerMeter; //规定了该位图的目标设备的垂直模式,单位是像素每米。

DWORD biClrUsed; //规定了颜色表中的颜色点数,它们被位图使用

DWORDbiClrImportant; //规定了在位图中比较重要的颜色点数,如果值为0,那么所有的颜色都是重要的。

} BITMAPINFOHEADER;

查看位图的信息(右键查看): 1.文件头 2.信息头 3.RGB掩码(如果有的话) 显示出来的形式如下: BITMAPFILEHEADER* = 0x02800048 BITMAPFILEHEADER .bfType = 0x4D42 .bfSize = 552158 .bfReserved1 = 0 .bfReserved2 = 0 .bfOffBits = 66 BITMAPINFOHEADER .biSize = 40 .biWidth = 353 .biHeight = 391 .biPlanes = 1 .biBitCount = 32 .biCompression = BI_BITFIELDS .biSizeImage = 552092 .biXPelsPerMeter = 0 .biYPelsPerMeter = 0 .biClrUsed = 0 .biClrImportant = 0 Red Mask = 00FF0000 Green Mask = 0000FF00 Blue Mask = 000000FF 说明: 1.第一行为内存中malloc出来的地址,由于是虚拟内存,不看也罢 2.该程序不止可以查看BITMAPINFOHEADER类型的位图, 其余三种类型也可查看,分别为: BITMAPCOREHEADER、BITMAPV4HEADER、BITMAPV5HEADER 3.最后三行的RGB Mask是颜色掩码,对于BITMAPINFOHEADER类型来说,不一定有。 4.右键功能是查看信息,左键是左右镜像操作,由于是底层数据直接每行左右互换, 而对于1、4位深的这两种位图,底层数据操作涉及位操作,而我还在写这个位图类, 故暂不支持,只支持8位以上的水平镜像操作。 5.支持剪切板操作,并且是以CF_DIB或CF_DIBV5呼叫GetClipboardData函数的, 复制时,也是以该参数呼叫SetClipboardData函数的。 你可以复制其他地方的图片过来,以查看图片属性。 6.程序中运行中保存在内存中的图片是BITMAPFILEHEADER*指针,不是HBITMAP, 呼叫的显示函数是SetDIBitsToDevice函数。 7.鼠标在图片上移动是,右边填充鼠标点的颜色,标题栏也有相关显示。 下边显示鼠标点附近11*11像素范围的放大图像,正中间用十字叉线画出。 取色是直接在底层取数据解析。 8.改程序在《windows程序设计》上的一个例子改编而来,并且正在完善该位图类中, 以加入更多丰富的底层操作功能。 改试验程序主要供想研究位图结构的人查看用。 9.windows搞出了4种位图种类,真作孽~~ 另,16、24、32位深的位图也可以有颜色表的,该程序已考虑在内。 10.下面四种压缩格式暂不支持: BI_RLE8、BI_RLE4、BI_JPEG、BI_PNG 11.随带的附件中,有几张不同格式的位图,你可以试验打开查看。 有问题联系:hastings1986@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值