Chinaunix首页 | 论坛 | 博客
  • 博客访问: 494981
  • 博文数量: 96
  • 博客积分: 6046
  • 博客等级: 准将
  • 技术积分: 908
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-07 22:40
文章分类

全部博文(96)

文章存档

2009年(12)

2008年(18)

2007年(45)

2006年(21)

我的朋友

分类: 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,就得出每行占用的字节数目了。

阅读(4780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~