在bmp格式中文件结构可以分为三部分,最开始的两三排内容为文件头,记录着文件的像素、色深等基本信息,紧接着的是调色板每个颜色的RGB值,每一组占用3个字节,地址从低到高依次为Blue Green Red(符合上一讲数值存储的基本规则),一共有16组(因为我们保存的是16色格式),接着调色板的就是每个点的色素索引值,也就是我们看到的那一串6。
色深不同保存后每个像素占用的空间就有区别,刚才我们所讲到的16色图片每个像素仅占用半个字节(因为只有16种颜色,所以就只有16个索引值用0-F表示出来),所以两个像素合起来才占用的是一个字节,合起来的数值在记录的时候是按位进行操作的,换句话说就是要满足数值存储的基本规则——高地址存放高位值,低地址存放低位值。如果图片是256色那么每个像素就得占用完整的一个字节,65535色(16位色)就得占用两个字节,以此类推。这里我们引入一个单位——bpp(bit per pixel)位每像素,这个单位和色深基本上是同一个意思只是描述的方式不一样,色深是直接指的颜色数量,bpp通过描述每个像素所占用的空间间接说明颜色数量,不过bpp这个在汉化的时候更为常用。通过以上的说明,我们就可以知道bpp和色深有如下关系:
1bpp—单色(黑白)
2bpp—4色