BMP图片格式说明

  • 格式:pdf
  • 大小:215.87 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BMP简介

BMP是一种与硬件设备无关的图像文件格式,使用非常广。BMP是Windows环境中交换与图有关的数据的一种标准,在Windows环境中运行的图形图像软件都支持BMP图像格式。

文件结构

典型的BMP图像文件由三或四部分组成:1:文件头

2:图像参数

3:调色板(目前基本不使用)

4:位图数据

1:文件头,它包含BMP图像文件的类型、内容尺寸和起始偏移量等信息;

字节顺序数据结构描述

1,2short 高8位为字母’B’,低8位为字母’M’

3,4,5,6int文件大小

7,8short保留字1

9,10short保留字2

11,12,13,14int数据部分偏移

数据部分偏移量

⏹位图数据部分相对于文件首的起始偏移量

⏹数据部分偏移量的存在,说明图像数据部分并不一定要紧随图像参数或调色板之后放置,BMP图片的制作者其实可以在调色板之后、数据部分之前填充任何内容,只要正确地设置偏移量即可。

返回

字节顺序数据结构描述

31,32,33,34int压缩方式

35,36,37,38int水平分辨率,

pixels-per-meter

39,40,41,42int垂直分辨率,

pixels-per-meter

43,44,45,46int垂直分辨率,

pixels-per-meter

47,48,49,50int引用色彩数

51,52,53,54int关键色彩数

back

3:调色板,可选部分,

⏹bpp:表示图像像素值的位数叫做图像的像素深度,又称为位/像素(BPP)。

⏹bpp较小的位图需要调色板;有些位图,比如24bpp(真彩色)图就不需要调色板;

⏹今天讲的是打开真彩色BMP位图。真彩色即24位图,它是不需要调色板的。

4:位图数据

这部分的内容因位图实际像素位数和编码格式而不同,在真彩位图中直接使用RGB真彩色值;而有调色板的位图则使用调色板中颜色索引值。

位图数据的读取

⏹1.每行的字节数必须是4的倍数,如果不是,则需要用0补齐。

⏹2.BMP位图数据的存放是从下到上,从左到右的。先读最后一行,读完后在读倒数第二行。

压缩方式

⏹第31-34字节存储着一个int型参数,它代表图像数据的压缩方式。该参数的取值范围是0、1、2或3中的一个。这些取值的含义分别是:

⏹0 —— RGB方式

⏹1 —— 8bpp的run-length-encoding方式

⏹2 —— 4bpp的run-length-encoding方式

⏹3 —— bit-fields方式

⏹只有压缩方式选项被置为bit-fields时,当前结构体的大小为56字节,否则为40字节。

1.BMP文件头(占14个字节)

⏹int bfType;// 位图文件类型,占两个字节,第一个字节为字母'B',第二个字节为字母'M'(1-2字节)

⏹int bfSize;// 位图文件的大小,以字节为单位(3-6字节)

⏹// 第7-10字节为位图的保留字,其Int值为0⏹// 位图数据的起始位置,以相对与位图(11-14字节)

⏹int bfOffBits;

⏹ 2.位图信息头(占40字节)

⏹int size;// 位图信息头所占用字节数,为40个字节

(15-18字节)

⏹static int image_width;// 位图的宽度,以像素为单位

(19-22字节)

⏹static int image_height;// 位图的高度,以像素为单

位(23-26字节)

⏹int planes;// 目标设备的级别,必须为1(27-28字节)⏹static int biBitCount;// 每个像素所需的位数,必须

是1(双色)、4(16色)、8(256色)、24(真彩色)之一,(29-30字节)

⏹int biCompression;// 位图压缩类型,必须是0(不压

缩)、1(BI_RLE8压缩类型)、2(BI_RLE4压缩类型)之一。

(31-34字节)

⏹static int sizeImage;// 位图的大小,以字节为单位(35-38字节)

⏹int biXPelsPerMeter;// 位图水平分辨率,每米像素数(39-42字节)

⏹int biYPelsPerMeter;// 位图垂直分辨率,每米像素数(43-46字节)

⏹int biClrUsed;// 位图实际使用的颜色表中的颜色数(47-50字节)

⏹int biClrImportant;// 位图显示过程中重要的颜色数(51-54字节)