微软windows Bitmap文件概述

来源:互联网 发布:淘宝袖剑安装图纸 编辑:程序博客网 时间:2024/04/29 21:55
注:只对文章的其中部分进行了翻译,源文件:http://www.fileformat.info/format/bmp/egff.htm

概述

Windows Bitmap File也可以称为BMP,DIB,Windows BMP, Windows DIB,或兼容性BMP.

类型Bitmap色深,一个像素用多少位表示1-, 4-, 8-, 16-, 24-, and 32-bits压缩方式RLE, 无压缩最大图像数据大小32Kx32K 或2Gx2G pixels每个文件支持多张图片数值格式Little-endian发起人Microsoft Corporation支持平台Intel machines running Microsoft Windows, Windows NT, Windows 95, OS/2, and MS-DOS支持的应用程序太多了,不胜枚举另请参阅OS/2 Bitmap

文件结构

Windows 1.x 的DDB文件格式有两部分组成:文件头和Bitmap数据,没有调色板和其它特征信息。

文件头

Bitmap数据

Windows 2.x, 3.x, and 4.x BMP 文件包含四部分:文件头信息头、调色板和Bitmap数据。这四部分只有调色板是可选的,根据色深的位数而定,其它三部分每个BMP文件都必不可少的。

文件头

信息头

调色板

Bitmap数据


图像数据和压缩

无压缩的图像数据是由一系列8位指向调色板的索引或真实的颜色值表示的。

Windows BMP文件格式对4位和8位色深的图片支持简单的行程长度编码RLE(run-length encoded),但对1、16、24、32bit色深的图片不能使用该压缩方式。

BMP采取两个值的RLE方案,第一个值是存放重复的次数,第二个值存放实际的值,重复次数不大于256;如果有大于256个完全相同的像素,则超过部分要用两个字节表示。这只是简单的描述,事实上更复杂,还有连续不重复的数据。RLE有两种编码方式,分别是RLE4和RLE8,分别对应4位和8位色深的图像,下面将详细讲解。

8位的RLE(RLE8)采取存储重复像素,第一个字节是0-255之间,表示重复的次数,第二个字节是一个真8位的实的颜色值,例如编码05 18将会解压成5个重复的像素值18即:18 18 18 18 18.对于RLE也类似,就是表示的位数不同。具体的压缩方式见如下表:

标识

00 00           一行的结尾00 01           文件的结尾00 02 XX YY     位置偏移标记,偏移YY行XX个像素00 tt           后面的tt位量真实的像素值

RLE8

压缩编码

解码描述

解码

04 16

4个字节的 16

16 16 16 16

08 45

8个字节的 45

45 45 45 45 45 45 45 45

00 00

一行的结尾

00 02 04 02

向上偏移2行加4个像素

03 E4

3个字节的 E4

E4 E4 E4

00 03 12 A4 46 00

后面3位有效的未压缩像素数据

12 A4 46

00 00

一行的结尾

00 01

文件的结尾


RLE4


压缩编码

解码描述

解码

04 16

4个交替的 1 、6值

1 6 1 6

08 44

8个交替的 1 、8值

4 4 4 4 4 4 4 4

00 00

一行的结尾

00 02 04 02

向上偏移2行加4个像素值

03 E4

3个交替的 1 、6值

E 4 E

00 06 12 A4 46 00

后面6位有效的未压缩像素数据

1 2 A 4 4 6

00 00

一行的结尾

00 01

文件的结尾


以下是一些Windows BMP文件数据类型的概述:

像素色深    

一个像素的大小    

压缩方式    

调色板    

颜色透明度  

1 bit

1 bit

0

4 bits

4 bits

0 , 2

8 bits

1 byte

0 , 1

16 bits

4 bytes

3

24 bits

3 bytes

0

32 bits

4 bytes

3

注:压缩方式0表示不压缩,1表示RLE8,2表示RLE4


原创粉丝点击