BMP图像格式的补充-扫描行

BMP格式还有个非常重要的规定:要求每一扫描行的字节数据必须能被4整除,也就是Dword对齐(Dword是一种数据类型,长度为4个字节)。如果图像的一行字节数不能被4整除,就需要在每行的未尾补齐0以达到规定。

  设图像位数为N,图像宽为W(以像素数表示),高为H(以像素数表示),扫描行字节数为L,现在我们来看一下图像的一些情况。
  1、图像的颜色数=2的N次方。图像位数指像素用二进制数表示时的位数。16位图像的颜色数为2的16次方=65536,这就是我们常说的6万色了。
  2、一个字节是8位,这样每个像素所需字节数=N/8。
  3、图像每行的字节数=W*N/8
  4、图像每一扫描行的字节数L要求必须能被4整除。
  当W*N/8能被4整除时,L=W*N/8;
  当W*N/8不能被4整除时,需要在每行数据补零字节数为4-(W*N/8) Mod 4(Mod是求余运算,X mod Y指X除以Y的余数),这样L=W*N/8+4-(W*N/8) Mod 4。即为
(biWidth* biBitCount+31)/8
  5、图像数据阵列的字节大小=L*H
  6、图像文件的大小,如果是用Photoshop保存的图像,除了文件头及数据阵列之外,还要加上未尾两个字节的0。文件头的大小,24位图为36h=54,16位r5g6b5图为46h=70,8位为436h=1078。

你可能感兴趣的:(BMP图像格式的补充-扫描行)