viccch.github.io

BMP格式详解

BMP格式详解

BMP格式

BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

BMP格式的图像,其优点是不采用任何压缩,无损并且颜色准确,有2色、16色、256色、真彩色各种选择;缺点就是文件占用的空间很大,不支持文件压缩,不适用于 Web 页,不受 Web 浏览器支持。

格式

24位图:每个像素颜色信息用24位来表示,也就是说每一个颜色用字节(8位)来表示。 除了24位图,还有1位(单色)、2位(4色,CGA)、4位(16色,VGA)、8位(256色)、16位(增强色)、24位(真彩色)和32位等。

bmp文件头(bmp file header)包含信息(14字节):

位图信息头(40字节),包含如下内容:

调色板(Color Palette): 调色板是可选的,不过这里的8位色图有调色板。那么接下来的数据就是调色板了。调色板就是一个颜色的索引,这里是8位色图,一共有256中颜色,由于每个颜色都有RGB三原色,也就是要3个字节表示,这样的话256个颜色就不能表示所有的颜色,所以就需要一个索引,用一个字节的索引指向4个字节表示的颜色(RGB加上Alpha值)。如果把这4个字节表示为一个Color类型,那么调色板就是Color的数组。由于Color类型也是一个数组,调色板就像一个二维数组palette[N][4],其中N是颜色的数量,这里就是256。因此,这个例子中的调色板的大小就是256x4=1024字节,在调色板之前,有14字节的bmp文件头,40字节的位图信息头,加上1024字节的调色板,一共1078字节,也就是说真正的图像数据前面有1078字节,这和bmp文件头中的bfOffBits相符,验证了我们的讨论。

数据区 当使用调色板时:

不用调色板 :