![单色BMP位图图像格式_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/54dda960-aa5d-4e9a-95da-0e3f1c4e2236/54dda960-aa5d-4e9a-95da-0e3f1c4e22361.gif)
![单色BMP位图图像格式_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/54dda960-aa5d-4e9a-95da-0e3f1c4e2236/54dda960-aa5d-4e9a-95da-0e3f1c4e22362.gif)
![单色BMP位图图像格式_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/54dda960-aa5d-4e9a-95da-0e3f1c4e2236/54dda960-aa5d-4e9a-95da-0e3f1c4e22363.gif)
![单色BMP位图图像格式_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/54dda960-aa5d-4e9a-95da-0e3f1c4e2236/54dda960-aa5d-4e9a-95da-0e3f1c4e22364.gif)
![单色BMP位图图像格式_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/54dda960-aa5d-4e9a-95da-0e3f1c4e2236/54dda960-aa5d-4e9a-95da-0e3f1c4e22365.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BMP位图图像格式简介1. 文件结构位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-informationheader)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。位图文件的组成结构名称符号位图文件头(bitmap-file header)BITMAPFILEHEADERbmfh位图信息头(bitmap-information header)BITMAPINFOHEADERbmih彩色表(color table)RGBQUADaColors图象数据阵列字节BYTEaBitm apBits位图文件结构可
2、综合在表 1中。偏移量域的名称大小内容图 像 文 件 头OOOOh文件标识2 byte两字节的内容用来识别位图的类型:'BM ': Windows 3.1x, 95, NT, BA ': OS/2 Bitmap Array'CI': OS/2 Color Icon'CP': OS/2 Color Pointer'IC': OS/2 Icon'PT': OS/2 Pointer注:因为OS/2系统并没有被普及开,所以在编程 时,你只需判断第一个标识“BM ”就行。0002hFile Size1 dword用字
3、节表示的整个文件的大小0006hReserved1 dword保留,必须设置为 0OOOAhBitmap Data Offset1 dword从文件开始到位图数据开始之间的数据(bitmapdata)之间的偏移量图 像 信 息 头OOOEhBitmap Header Size1 dword位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示:28h - Win dows 3.1x, 95, NT,0Ch - OS/2 1.xF0h - OS/2 2.x注:在 Windows95、98、2000等操作系统中,位 图信息头的长度并不一定是28h,
4、因为微软已经制定出了新的BMP文件格式,其中的信息头结构变 化比较大,长度加长。所以最好不要直接使用常数 28h,而是应该从具体的文件中读取这个值。这样 才能确保程序的兼容性。0012hWidth1 dword位图的宽度,以象素为单位0016hHeight1 dword位图的高度,以象素为单位001AhPla nes1 word位图的位面数(注:该值将总是1)001ChBits Per Pixel1 word每个象素的位数。1 -单色位图(实际上可有两种颜色,缺省情况下是黑色和白色。你可以自己定义这两种颜色)4 - 16色位图8 - 256色位图16 - 16bit高彩色位图24 - 24bi
5、t真彩色位图32 - 32bit增强型真彩色位图OO1EhCompressi on1 dword压缩说明:0 -不压缩(使用BI_RGB表示)1 - RLE 8-使用8位RLE压缩方式(用BI_RLE8 表示)2 - RLE 4-使用4位RLE压缩方式(用BI_RLE4 表示)3 - Bitfields-位域存放方式(用 BI_BITFIELDS 表 示)0022hBitmap Data Size1 dword用字节数表示的位图数据的大小。该数必须是4的倍数0026hHResolution1 dword用象素/米表示的水平分辨率002AhVResolution1 dword用象素/米表示的垂直
6、分辨率002EhColors1 dword位图使用的颜色数。如8-比特/象素表示为100h或 者2560032hImporta nt1 dword指定重要的颜色数。当该域的值等于颜色数时(或 者等于0时),表示所有颜色都一样重要调 色 板 数 据根据BMP版本的不 同而不 同PaletteN * 4byte调色板规范。对于调色板中的每个表项,这4个字节用下述方法来描述 RGB的值:1字节用于监色分量1字节用于绿色分量1字节用于红色分量1字节用于填充符(设置为0)图 象 数 据根据BMP版本及调 色板尺 寸的不 同而不 同Bitmap Dataxxxbytes该域的大小取决于压缩方法及图像的尺寸
7、和图像 的位深度,它包含所有的位图数据字节,这些数据可能是彩色调色板的索引号,也可能是实际的RGB值,这将根据图像信息头中的位深度值来决2四个部分在位图图像数据中的相应位置,(位置偏移均以位图数据开始处为基准)起始位置偏移 <=各部分数据具体存放位置< 结束位置偏移第一部分,图像头:起始位置偏移 0,长度:OxOEH ( 2byte + 3 * dword = 14)结束位置偏移:起始位置偏移+长度第二部分,图像信息头:起始位置偏移:上一部分结束位置偏移长度:从 0x0EH 处读取到的 dword 的数据值 结束位置偏移:起始位置偏移 长度第三部分,调色板: 起始位置偏移:上一部分
8、结束位置偏移 长度:从 0x0AH 处读取到的 dword 的数据值 起始位置偏移 结束位置偏移:起始位置偏移 长度第四部分,位图数据: 起始位置偏移:上一部分结束位置偏移 长度:从 0x22H 处读取到的 dword 的数据值 结束位置偏移:文件结束3 单色位图图像数据的表示方法 在单色位图图像中,只有两种颜色,黑色或白色,每一个像素只需要一个比特就能够完成表示,为了清楚比特 0或 1 具体表示哪一种颜色,可以通过查询调色板。 在单色位图图像中,调色板只包含两种颜色,每一种颜色用R G B 0 四个字节表示 (在实际的字节流中,顺序是 B G R 0)所以, 位图图像数据中的 0 代表调色板
9、中 第一种颜色的颜色值, 1 代表调色板中 第二种颜色的颜色 值。4 C/C+ 中数据类型的长度 byte : 1 个字节, 8 位(比特) word : 2 个字节, 由 unsigned short 定义 dword : 4 个字节, 由 unsigned long 定义5 根据前面的位图文件结构表,可以通过自定义数据结构struct 的方式来读取 相应的数据。6 位图数据的存储方式: (自下而上,从左到右) 扫描行是由底向上存储的,这就是说,位图数据的第一个字节表示位图左下角的象素, 而最后一个字节表示位图右上角的象素。7 一行单色位图数据的存储格式规定 : 每一扫描行的字节数必需是 4
10、 的整倍数,当不够 4 的整数倍时,需要加 0 补齐以720 X 450的单色位图图像为例水平扫描行的长度为 720,则需要 720 比特来表示一个扫描行,即需要 720/8=90 字节来 表示,但是 90 不是 4 的整数倍,因此需要用 0补齐,直至为 4的整数倍,即需要额外的 2 个填充字节。最终,长度为 720 的水平扫描行使用了 92 个字节来表示。8 仅考虑分辨率为 256X 192 和 128X 96 两种模式BMP 文件分析(一)单色 BMP 文件 收藏最近需要用到 BMP 文件信息,参考网上的一些资料,把自己理解的东西整理一下。呵呵42 4D 3E 04 00 00 00 00
11、00 00 80 00 00 00 40 0000 00 00 04 00 00 C4 0E00 00 00 00 00 00 00 0000 00 3E 00 00 00 28 00 00 00 01 00 01 00 00 0000 00 C4 0E 00 00 00 00 00 00 FF FF FF 00 FF FFFF FF FF FF FF FF FF FFFF FF FF FF FF 00 FF FF尾部FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 FF 头部FF FF FF FF FF FF FF FF FF FF FF FF FF
12、FF“”为头尾的8个pixel为黑点,头尾顺序反转,同一行也顺序反转 由于128十8 = 16,所以每行就用16位来控制42 4D 2 bytes 文件类型 BM3E 04 00 00 1 dword 文件大小 108600 00 00 001 dword 保留,必须设置为 0(include reserved1+reserved2)3E 00 00 001 dword从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 3E(H) = 62(D)28 00 00 001 dword 位图信息头 (Bitmap Info Header) 的长度,用来描述位图的颜色、压缩方法
13、等。下面的长度表示: 28h - Windows 3.1x, 95, NT, ,80 00 00 001 dword 位图的宽度,以象素为单位bmp 的长 12840 00 00 001 dword 位图的高度,以象素为单位bmp 的宽 6401 001 word 位图的位面数(注:该值将总是 1 Pages =101 001 word 每个象素的位数, 1 - 单色位图 Colors=2(BLACK & WHITE)00 00 00 001 dword 压缩说明, 0 - 不压缩 (使用 BI_RGB 表示 )00 04 00 001 dword用字节数表示的位图数据的大小。该数必须
14、是4的倍数1024 = 128*64/8 (长X宽十每位表示 8 个 pixel)C4 0E 00 001 dword 用象素 /米表示的水平分辨率,水平3780C4 0E 00 001 dword 用象素 /米表示的垂直分辨率,垂直378000 00 00 001 dword 位图使用的颜色数00 00 00 001 dword 指定重要的颜色数00 00 00 00 N * 4 byte 调色板规范。对于调色板中的每个表项,这 4个字节用下述方法来描述 RGB 的 值,根据 BMP 版本的不同而不同FF FF FF 00 这里的 N=2 数据段取值规律每 8 个 pixel 由 1 个 b
15、yte 来控制从 FF-00FF7F 3F 1F 0F 07 03 01 00255 127 63 31 15 7 3 1 011111111 01111111 00111111 00011111 00001111 00000111 00000011 00000001 00000000 由上述规律可以得到当取出一个 byte 的数据要进行以下转换才知道那个 pixel 被画黑1、从 16 进制到 10 进制转换2、从 10 进制到 2 进制转换将得到的2进制数中为0的pixel画黑算法实现1、以二进制文件打开文件2、按照 BMP 文件信息和 BMP 图片信息开始读取,这里的长度是固定的3、根据
16、 BMP 文件信息中的数据偏移量得到,数据段的开始位置4、 读取数据信息根据每行用16位来描述以及数据反转的原因,故每次读取16个byte来进行每行的数据处理(可以使用递归)5、用一个数组来存储 bmp 数据信息 BMPINFO128646、每 byte 都为 8 个 pixel 的信息通用数据存储格式1、数据是按照每一行的数据进行存储2、根据 x、 y 的 pixel 来确定3、如果0<x< = 32,则用4个bytes来存储,32<x<=64,则用8bytes来存储,以此类推 a<=b*84、 多余的bytes则为浪费的空间,例如x= 33的bmp,要用8by
17、tes来存储每行的信息,但是每行只用到5bytes,所以x的范围在很大程度上决定了bmp文件的大小通用算法1 、以二进制文件打开文件2、按照 BMP 文件信息和 BMP 图片信息开始读取,这里的长度是固定的3、根据 BMP 文件信息中的数据偏移量得到,数据段的开始位置4、根据 BMP 图片信息中 x 的 pixel 来取得每行需要读取的 bytes5、 用一个数组来存储bmp 数据信息 BMPINFOxy6、每 byte 都为 8 个 pixel 的信息,多余部分不处理、这是我自己以 16x16 单色 bmp 位图格式保存的文件,用 uedit 打开学习它的数据格式:0001020304050
18、6070809 0a 0b 0c 0d 0e 0fOOh:424d7eOOOOOOOOOOOOOO3eOOOOOO28OO1Oh:OOOO2OOOOOOO2OOOOOOOO1OOO1OOOOOO2Oh:OOOO8OOOOOOOc4OeOOOOc4OeOOOOOOOO3Oh:OOOOOOOOOOOOOOOOOOOOffffffOOffff4Oh:OOOOffffOOOOffffOOOOffffOOOOffff5Oh:OOOOffffOOOOffffOOOOffffOOOOffff6Oh:OOOOffffOOOOffffOOOOffffOOOOffff7Oh:OOOOffffOOOOffffOOO
19、OffffOOOO二、问题 :1, 按照格式,偏移Oah处的值3eh,是图像数据的偏移位置,照此去读图像数据:2, 按理 16x16 的单色位图应该有 16*16/8=32 字节的图像数据,但这个文件有 64 个字节,这是个全白图片,应该每行对应两字节: ffh ffh ,然实际是: ffh ffh OOh OOh。3, 发现 32x32 尺寸的图片是对的:每行对应四个字节,ffh ffh ffh ffh( 全白);然而,48x48尺寸的图片有不对了:ffh ffh ffh ffh ffh ffh OOh OOh,后面又"补"了两个字节的OO(与16x16的类似),似乎要补足4的倍数?bmp 文件头格式:偏移bmp文件头结构说明OOhwordbftype"bm"O2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 用户体验设计提升产品体验的秘诀
- 电商企业的风险管理及应对策略
- 2025年周口货运从业资格考试题目
- 电子商务物流管理中的问题与对策分析
- 现代企业决策中的心理学应用
- 生产制造中的智能仓储与物流优化
- 未来十年移动支付的预测与展望分析报告
- 北京2025年02月国家自然科学基金委员会科学传播与成果转化中心招考1名合同制工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 电商行业的品牌建设与维护策略
- 环保建材的商业价值与市场前景分析
- 服装厂安全生产培训
- 城市隧道工程施工质量验收规范
- 2025年湖南高速铁路职业技术学院高职单招高职单招英语2016-2024年参考题库含答案解析
- 五 100以内的笔算加、减法2.笔算减法 第1课时 笔算减法课件2024-2025人教版一年级数学下册
- 2025年八省联考陕西高考生物试卷真题答案详解(精校打印)
- 2025脱贫攻坚工作计划
- 借款人解除合同通知书(2024年版)
- 《血小板及其功能》课件
- 10kV配网工程变配电(台架变、箱变、电缆分接箱)的安装设计施工精细化标准
- Q∕GDW 12118.3-2021 人工智能平台架构及技术要求 第3部分:样本库格式
- 广东省义务教育阶段学生转学转出申请表(样本)
评论
0/150
提交评论