分类: C/C++
2007-02-26 13:29:21
BMP文件格式要求,每一行的数据要在4字节处对齐,也就是说,如果每行数据长度
不是4字节的整数倍,就需要在后面补0,以使其成为4字节的整数倍。
公式RowLength=4*((bmch.bcWidth*bmch.bcBitCount+31)/32)中
bcWidth是每行像素数目;
bcBitCount是每像素占用的二进制位数;
二者相乘是实际占用的二进制位数;
32是4个字节的位数(4×8=32);
加31的作用是:如果原长度是4字节的整数倍,增加的31就会被后续的整数除法舍
去,不会改变长度值;如果不是4字节的整数倍,后续的整数除法中,增加的31就
会保证把长度增加到4字节的整数倍;
除以32(注意这里是整数除法)是为了求得补足4字节整数倍后,数据中有多少组4字节;
最后乘以4,就得出每行占用的字节数目了。