当前位置:首页 > 日记 > 正文

关于存储格式的安排(BMP格式介绍)

关于存储格式的安排(BMP格式介绍)
BMP

BMP(全名位图)是Windows操作系统中的标准图像文件格式。

它可以分为两类:设备相关位图(DDB)和设备无关位图(DIB),它的应用非常广泛。

除了图像的深度以外,它使用了一种位图存储格式,除了其他任何压缩方式。因此,BMP文件占用了大量的空间。BMP文件的图像深度可选的税前亏损,4位,8bit、24bit。BMP文件存储数据时,图像是从左到右的顺序进行扫描,从底部到顶部,因为BMP文件格式是在Windows环境下图相关数据交换标准,图形和图像软件在Windows环境下运行,支持BMP图像格式。

形式

一个典型的BMP图像文件由四部分组成:

1:位图文件的数据结构,其中包含BMP图像文件的类型、显示内容等。

2:位图信息数据结构,其中包含bmp图像的宽度、高度、压缩方法以及颜色的定义等信息。

3:调色板,这部分是可选的,需要一些位图调色板,和一些位图,如图(24位真彩色BMP),不需要调色板。

4:位图数据。这个部分的内容根据BMP位图中位数的不同而不同。RGB直接用于24位图,而其他24位使用调色板中的颜色索引。

相应的数据结构

1:BMP文件合成

BMP文件由四部分组成:文件头、位图信息头、颜色信息和图形数据。

2:BMP文件头(14字节)

BMP文件头数据结构包含BMP文件类型、文件大小和位图起始位置的信息。

它的结构定义如下:

typedef struct tagbitmapfileheader

{

字bftype; / /类型的位图文件,必须BM(1-2个字节)

DWORD bfsize; / /位图文件的字节大小(3-6个字节)

字bfreserved1; / /位图文件的保留字,必须是0(8字节)

字bfreserved2; / /位图文件的保留字,必须0(9-10个字节)

DWORD bfoffbits; / /位图数据的起始位置,相对于位图(11-14字节)

偏移量文件头,以字节为单位

} BITMAPFILEHEADER;
3:位图信息头(40字节)

BMP位图信息头的数据是用来说明位图的大小和其他信息的。

tagbitmapinfoheader { typedef struct

DWORD bisize; / /字节数的结构(15-18个字节)

长biwidth;像素位图的宽度(19-22字节)

长biheight; / /位图中的像素高度(23-26字节)

字的双翼; / /目标设备的水平必须是1(27字节)

字bibitcount; / /为每个像素所需的比特数,必须是1(颜色),(29-30字节)

4(16种颜色),8(256种颜色)或24(真彩色)

DWORD bicompression;位图的压缩类型,必须是0(不压缩)、(31-34字节)

(1 / / bi_rle8压缩型2(bi_rle4)或一个压缩型)

DWORD bisizeimage; / /位图的大小,以字节为单位(35-38字节)

长bixpelspermeter;位图的水平分辨率,像素数每米(39-42字节)

长biypelspermeter;位图的垂直分辨率,像素数每米(43-46字节)

DWORD biclrused;在颜色表号位图实际使用(47-50字节)

DWORD biclrimportant; / /位图在数的过程中显示重要的颜色(51字节)

} BITMAPINFOHEADER;
4:颜色表

颜色表用于说明位图中的颜色。它有几个表项。每个表项是一个颜色表项式结构,和一个颜色定义的颜色表项结构定义如下:

tagrgbquad { typedef struct

字节rgbblue; / /蓝色的亮度(范围为0-255)

字节rgbgreen; / /绿色的亮度(范围为0-255)

字节的图像; / /红色的亮度(范围为0-255)

字节rgbreserved; / /预订必须0

}颜色表项;

颜色表中的颜色表项结构数据的数量是bibitcount确定:

当bibitcount = 1,有216256项分别表。

当bibitcount = 24,没有颜色表项。

位图信息头和颜色表构成位图信息。BITMAPINFO结构定义如下:

tagbitmapinfo { typedef struct

BITMAPINFOHEADER bmiHeader; / / bitmap information header

颜色表项bmicolors { 1 }; / /颜色表

} BITMAPINFO;

5:位图数据

位图数据记录位图的每个像素值。记录的顺序是从扫描线的左到右,扫描线之间的直线是从底部到顶部的。位图的像素值中的字节数:

当bibitcount = 1, 8像素占1个字节。

当bibitcount = 4, 2像素占1个字节。

当bibitcount = 8, 1像素占1个字节。

当bibitcount = 24, 1像素占3个字节。

Windows指定扫描线占用的字节数必须为

乘数为4(即长),而不足则为0。

bisizeimage = ((((((((((((( bi.biwidth *双。bibitcount)+ 31)~ 31)/ 8)* bi.biheight;

具体数据的例子:

在BMP文件的开头:

424d 4690000000000000, 4600000028000000, 8000000090000000 0100×1000, 0300000000900000 0000000000000000 0000×0000 a00f a00f 00f8 e007 1f00 0000×02f1 84f1 04f1 84f1,04f1,我们…

文件段

图像文件头

1)1-2:(数字代表单词词0x4d42 = 'bm ',这是一个bmp格式的Windows支持的。(注:ASCII表B 0x42,m0x4d,bftype两字节,B是低字节,高字节M,所以bftype = 0x4d42,不0x424d,但注意)

2)3-6:整个文件size.46900000,为00009046h = 36934。

3)7-8:预订必须设置为0。

4)9-10:预订必须设置为0。

5)11-14:从文件开始到位图数据之间的偏移(14 + 40 + 4 *(2 ^ bibitcount))。46000000、000000 46h = 70,顶层文件头35字= 70字节。

Bitmap information header

6)15-18:对位图信息头长度。

7):在pixels.80000000 19-22的位图的宽度,000000 80h = 128。

8):在pixels.90000000 23-26的位图的高度,000000 90h = 144。

9)日:对位图位图数,它总是1.0100,对0001h = 1。

10)29-30:像素,每像素数。有1(黑白),4(16色),8(256色),16(64K色,高色)、24(1600万色,真彩色),32(4096m色彩,增强真彩色)。1000是0010h = 16。

11)报道:压缩描述:0(未)、1(游程8, 8位RLE压缩),2(游程4, 4位RLE压缩,3(Bitfields,位存储)。RLE只是利用像素和像素值compress.t408使用位域的存储,在两个字节代表一个像素,并分配到图r5b6g5.03000000位场0000000 3H = 3。

12)35-38:字节大小的位图数据,次数必须为4,的值等于(大于或等于4的倍数的位图的最小宽度)×每个像素的位图的高度number.00900000是00009000h = 80×90 = 36864×2h。

13)39-42:水平分辨率的像素/ meters.a00f 0000表示的是0000 0fa0h = 4000。

14)运用:垂直分辨率由像素/ meters.a00f 0000表示的是0000 0fa0h = 4000。

15)47-50:使用颜色指数位图。设置为0时,使用所有的调色板项。

16)技术指标:颜色,对图像显示的重要影响数。如果是0,重要的是表达。

彩板

17)(55+0)至(50±2 ^ bibitcount):彩板规范。每个表项中的调色板,下面的方法是用来描述RGB值:

蓝色组件的1字节

1字节的绿色组件

1字节用于红色组件

用于填充字符的1字节(设置为0)

彩色印版不用于24位真彩色图像,因为位图中的RGB值表示每个像素的颜色。

例如,彩色板00f8 0000 e007 0000 1f00 000000000000,这:

00f8是f800h = 11111 00000000000(二进制),蓝色的成分的面膜。

e007是07e0h = 00000 111111 00000(元),一个为绿色成分的面膜。

1f00是001fh = 00000000000 1 { 1 } 1111(二进制),一个红色的成分的面膜。

0000的总数是0。

每个颜色分量的值可以通过使用掩模和像素值和移位操作得到。看着面具,你可以了解的事实,在两字节的16位每个像素值,5, 6,和5位的5, 6,和5位的r值、G和B分别取出组件的值后,将R、G、B 8, 4和8的值,第一部分是一个字节。然后将三个字节合并成RGB,并放入内存(也可以是倒序),可以转换成24位标准BMP格式。

图像数据阵列

18)55(没有调色板)- bfsize:每两个字节一个像素。数组中的第一个字节代表位图的左下角的像素,和最后一个字节表示像素的位图的右上角。

存储算法

BMP文件通常是不压缩的,所以他们通常比压缩图像文件格式的图像要大得多。例如,一个800×600的24位几乎占据了1.4mb空间。所以他们通常不适用于网络传输或其他低速或容量有限的媒体。根据不同的颜色深度,一个像素的图像可以由一个或多个字节来表示。它是由n / 8确定(比特深度,是N和1字节包含8个数据位),图片浏览器,等,计算基于字节的ASCII值的像素的颜色,然后读取面板中的相应值。有关详细信息,请参阅下面的位图文件的一部分。位图近似字节数为2n位n位可以通过以下公式计算:BMP文件的大小约等于54 + 4 * 2的N +(宽×高×n)/ 8,其中高度和宽度都是像素。注54上述公式是位图文件头的重要,和调色板的大小。另一个要注意的是,这是一个近似值。对于n位的位图图像,虽然可能有一个最大的2n的颜色,一个特定的图像可能无法使用所有这些颜色。用作调色板只定义了图像中使用的颜色,实际的颜色要比调色板。如果你想知道这些值是如何得到的,请参阅以下文件格式的部分。由于存储算法确定的因素,计算大小根据不同的图像参数,将从实际文件大小略有不同。

相关文章

轻松插入纸

轻松插入纸

轻松,电脑软件,已经有在WPS Office 2009提供了WPS WPS文字格式的设置,但论文格式默认设置对整个文档,不仅为论文格式半页或一个或两个页面,这是一个主要的缺点。毕竟,当教师在语文试卷的编制,经常需要插入一些论文格式在一张纸上,混合排版的文本…

PHP使用ffmpeg添加文本字幕的视频

PHP使用ffmpeg添加文本字幕的视频

字幕,文本,视频,电脑软件,PHP,本文主要介绍了PHP使用ffmpeg添加字幕的视频的方式。实例分析了PHP运行ffmpeg的技能添加字母视频,具有一定的参考价值和需要的朋友参考。 本文的例子讲方法,PHP使用ffmpeg添加字幕显示视频,分享给大家仅供参考。…

如何在传统WPS表单中简化成wordWPS

如何在传统WPS表单中简化成wordWPS

文本,教程,表单,传统,如何在,如果我们需要中国传统人物完成后编辑文件都转换成简体中文,那我应该怎么做,别担心,让萧边告诉你如何在传统的WPS表格将字的简化方法。 在传统WPS形式中,Word简化为方法: 打开WPS软件并创建一个新软件。以下是几句…

PS创意风格图标画家立体钢琴

PS创意风格图标画家立体钢琴

图标,创意,画家,钢琴,风格,本教程教学习者使用ps PS画家的创作钢琴图标,渲染出来的图标很有创意,立体感强。在压平的时候,我更喜欢这种效果,推荐它,一起学习吧。 以上方法是PS钢琴图标画家创作的立体风格,很好的教程,推荐一看!…

如何插入word文档链接ppt基本教程p

如何插入word文档链接ppt基本教程p

文档,教程,链接,电脑软件,word,在日常工作中,PPT经常用来写草稿。如果我们需要把word文档链接插入PPT,我们如何插入它让我们告诉你如何在PPT中插入word文档链接。 PPT中word文档链接的插入方法: 打开PPT软件,点击插入按钮。 单击文本框插入Wo…

如何调整PPT表行ppt制作高级教程

如何调整PPT表行ppt制作高级教程

教程,调整,高级,电脑软件,ppt,我们在PPT中添加的表格通常需要调整它们的行的高度。它可能不知道如何操作新来者。让我们来告诉你如何调整PPT表格的高度。 调整PPT表行高度的方法 1。选择表单,表单工具(布局)mdash;mdash;配电线路,使所有行均匀…

轻松的掌握在CSS3字体大小单位REM

轻松的掌握在CSS3字体大小单位REM

单位,字体大小,轻松,电脑软件,REM,在CSS3的新字体单位雷姆 不久前,我无意中联系了WordPress主题中的字体单元REM。那时我很好奇。毕竟,我以前没有见过,所以我立刻搜索了一下信息,并进行了一次测试。 大家都知道,有很多字体单位(字体大小)在网页(字…

让单元格中的数字自动添加到小数点

让单元格中的数字自动添加到小数点

数字,格中,单元,小数点,电脑软件,当我们在excel中输入数字和汉字数据时,不断切换英文输入模式,这样不仅降低了输入效率,而且开关错误会忘记或丢失小数点,我们可以设置工具选项使单元格数字自动小数点,步骤如下: 步骤1:在菜单栏中点击工具;;RARR;选项…

迷恋签名经典签名

迷恋签名经典签名

经典,电脑软件,你是迷恋迷恋的人吗你觉得什么样的签名请欣赏小编辑推荐的那份痴情的签名。 迷恋的签名: 1)向往阳光的温暖,你会给我温暖的阳光。 2)羡慕温暖的阳光,你会给我温暖的阳光。 3)最后只剩下星星,和我一样的记忆。 4)至少记忆是永恒的…

生成序列号oracle的方法

生成序列号oracle的方法

方法,序列号,电脑软件,oracle,思想: 通过一个序列号表,记录当前序列号的最大值,以便取下。每次,何时会把序列号变成大更新。 涉及的桌子: 表:序号hp_no 领域 类型 type_name VARCHAR2(100) start_no VARCHAR2(100) current_no VARCHAR2(100) 代码uff1…

用PS图象处理软件的灰色位置细化

用PS图象处理软件的灰色位置细化

细化,位置,图象,处理软件,灰色,本教程介绍了恢复灰度图像更精细的方法。作者的主要流程如下:首先,色调,画面的饱和度和层次与颜色工具调整。角色的有缺陷的部分可以适当美化。然后用选择来控制颜色的地方,图片不满意的部分可以加工过程。 原 …

用滤镜制作优雅的彩色旋转光束

用滤镜制作优雅的彩色旋转光束

滤镜,光束,优雅,彩色,电脑软件,它可能不见效果图很奇怪,因为有很多的教程,介绍了类似的结果的方法,但作者也加入了一些新的措施,如锐化,和提高的结果。一般过程:首先用滤波器使一些破碎的黑色和白色的背景,然后使用径向模糊和扭曲过滤器把背景变成…