原创 BMP文件格式解析

2010-3-2 16:53 2694 5 5 分类: 工程师职场

典型的位图文件格式通常包含下面几个数据块:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />



  • 位图头:保存位图文件的总体信息。


  • 位图信息:保存位图图像的详细信息。


  • 调色板:保存所用颜色的定义。


  • 位图数据:保存一个又一个像素的实际图像。


位图头


这部分是识别信息,典型的应用程序会首先普通读取这部分数据以确保的确是位图文件并且没有损坏。



  • 字节 #0-1(偏移地址) 保存位图文件的标识符,这两个字节的典型数据是BM


  • 字节 #2-5 使用一个dword保存位图文件大小


  • 字节 #6-9 是保留部分,留做以后的扩展使用,对实际的解码格式没有影响。


  • 字节 #10-13 保存位图数据位置的地址偏移,也就是起始地址。


位图信息


这部分告诉应用程序图像的详细信息,在屏幕上显示图像将会使用这些信息,它从文件的第15个字节开始。



  • 字节 #14-17 定义以下用来描述影像的区块(BitmapInfoHeader)的大小。它的值是:28h - Windows 3.295NT12 - OS/2 1.x240 - OS/2 2.x


  • 字节 #18-21 保存位图宽度(以像素个数表示)。


  • 字节 #22-25 保存位图高度(以像素个数表示)。


  • 字节 #26-27 保存所用彩色位面的个数。不经常使用。


  • 字节 #28-29 保存每个像素的位数,它是图像的颜色深度。常用值是148(灰阶)和24(彩色)。


  • 字节 #30-33 定义所用的压缩算法。允许的值是012345


然而,由于大多数位图文件都是不压缩的,所以最常用的值是0



  • 字节 #34-37 保存图像大小。这是原始(:en:raw位图数据的大小,不要与文件大小混淆


  • 字节 #38-41 保存图像水平方向分辨率。


  • 字节 #42-45 保存图像竖值方向分辨率。


  • 字节 #46-49 保存所用颜色数目。


  • 字节 #50-53 保存所用重要颜色数目。当每个颜色都重要时这个值与颜色数目相等。


调色板


这部分定义了图像中所用的颜色。如上所述,位图图像一个像素接着一个像素存储,每个像素使用一个或者多个字节的值表示,所以调色板的目的就是要告诉应用程序这些值所对应的实际颜色。


典型的位图文件使用RGB彩色模型。在这种模型中,每种颜色都是由不同强度(从0到最大强度)的红色(R)、绿色(G)和蓝色(B)组成的,也就是说,每种颜色都可以使用红色、绿色和蓝色的值所定义。


在位图文件的实现中,调色板可以包含很多条目,条目个数就是图像中所使用的颜色的个数。每个条目包含4个字节:其中三个表示红色、绿色和蓝色,第四个字节没有使用(大多数应用程序将它设为0)。对于每个字节,数值0表示相应的颜色在当前的图像文件中没有使用,而数值255表示那个颜色使用最大的强度


位图数据


这部分逐个像素表示图像。像素是从下到上、从左到右保存的。每个像素使用一个或者多个字节表示。如果一个图像水平线的字节数不是4的倍数,这行就使用空字节补齐,通常是ASCII0

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条