c语言读取bmp 文件的数据结构,BMP格式文件的数据结构

匿名用户

1级

2014-05-16 回答

BMP是一种与硬件设备无关的图像文件格式,其支持1,4,8,16,24,32位的图像存储,并且支持非压缩和压缩这两种存储方式,数据是以Little Endian依次存储。由于历史的原因,存在Windows和OS/2两种类型的BMP,目前Windows类型的BMP基本上可是说是事实上的标准,下面均以此类型BMP文件为例,其文件主要由以下3部分组成: (1)文件头和信息头 typedef struct _tag_BMP_FILEHEADER{ WORD bfType; //2Bytes,必须为"BM",即0x424D DWORD bfSize; //4Bytes,整个BMP文件的大小 WORD bfReserved1; //2Bytes,保留字,可设为0 WORD bfReserved2; //2Bytes,保留字,可设为0 DWORD bfOffBits; //4Bytes,文件起始位置到图像像素数据的偏移 } BMP_FILEHEADER; typedef struct _tagBMP_INFOHEADER{ DWORD biSize; //4Bytes,INFOHEADER结构体大小,存在其他版本INFOHEADER,用作区分 LONG biWidth; //4Bytes,图像宽度(以像素为单位) LONG biHeight; //4Bytes,图像高度,+:图像存储顺序为Bottom2Top,-:Top2Bottom WORD biPlanes; //2Bytes,图像数据平面,BMP存储RGB数据,因此总为1 WORD biBitCount; //2Bytes,图像像素位数 DWORD biCompression; //4Bytes,0:不压缩,1:RLE8,2:RLE4 DWORD biSizeImage; //4Bytes,4字节对齐的图像数据大小 LONG biXPelsPerMeter; //4 Bytes,用象素/米表示的水平分辨率 LONG biYPelsPerMeter; //4 Bytes,用象素/米表示的垂直分辨率 DWORD biClrUsed; //4 Bytes,实际使用的调色板索引数,0:使用所有的调色板索引 DWORD biClrImportant; //4 Bytes,重要的调色板索引数,0:所有的调色板索引都重要 } BMP_INFOHEADER; (2)调色板数据(可选) 1,4,8位图像会使用调色板数据,其它不需要调色板数据,即调色板最多只需要256项(索引0 - 255),调色板数据通常采用如下数据结构: typedef struct _tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; (3)图像像素数据; 采用四字节对齐存放的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值