永发信息网

为什么24位位图(真彩色)的biSizeImage不等于(biWidth*biBitCount+31)/32*4*biHeight?

答案:3  悬赏:80  手机版
解决时间 2021-02-25 02:22
为什么24位位图(真彩色)的biSizeImage不等于(biWidth*biBitCount+31)/32*4*biHeight?
最佳答案
规定的,规定BMP文件的像素数据是按行存储的,而且每行的字节数必须为4的倍数,如果实际的像素数据不是4的倍数咋办?这就需要字节对齐,对齐是在一行的末尾添0以补足一行的字节数为4的倍数,
( biWidth*biBitCount+31)/32*4*biHeight//其中 biWidth是图像的宽度以像素为单位,biBitCount是每个像素的位数,如黑白图像(不是灰阶的,要么黑色要么白色)为1个像素1位,16色是4位,真彩色是24位
......biHeight是指图像的高度
( biWidth*biBitCount+31)/32*4是得出一行的实际要多少字节.乘以biHeight就是总的大小了
下面就来举例讲解是怎样对齐的(到达4的倍数):
biWidth=1
biBitCount=1

biWidth*biBitCount=1;还不足1字节,所以要补足4字节

1+31=32(位),
(1*1+31)/32=1,注意这里为什么要除以32?是因为4字节=32位,换个角度则是总共要多少个4字节,
最终一行字节数为:1*4=4字节,
biWidth=52
biBitCount=1
biWidth*biBitCount=52*1=52

(52*1+31)/32=2 每行要2个4个字节
最终要多少还要乘以4,即:
2*4=8,即当宽度为52像素,每像素要1位存储时,每行要8个字节
再来:
biWidth=111
biBitCount=24//即真彩色
biWidth*biBitCount=111*24=2664(位)

2664/(4*8)=2664/32=83 余8位,肯定不能把这8位丢掉不存储吧,其实目的就是要把这8位的末尾添加24个0装满32位(即4字节),所以:
(biWidth*biBitCount+31)/32=(2664+31)/32=2695/32=84(4字节),即要84个4字节存储,所以最终还要乘以4:
(biWidth*biBitCount+31)/32*4=84*4=336(字节)

.....................................
注意这里不能把31写成32,如果写成32则会出错如:
biWidth=32
biBitCount=1
(biWidth*biBitCount+32)/32*4=64/32*4=8本来只需要4个字节,结果为8了

肯定也不能小了比如30,那么当:
biWidth=1
biBitCount=1
(biWidth*biBitCount+32)/32*4=0肯定不对了,

还要注意的就是,
(biWidth*biBitCount+31)/32*4不能写成(biWidth*biBitCount+31)/8,原因就是因为'/'是取整的意思

所以:(biWidth*biBitCount+31)/32*4 不等于 (biWidth*biBitCount+31)/8,不信你举个例子试试.

记住:(biWidth*biBitCount+31)/32 是关键,表示需要多少个(4字节),把这个结果再乘以4结果肯定是4的倍数了.
全部回答
24位真彩色中 没有调色板 我只知道这些
是字节对齐的原因吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天天酷跑怎么邀请好友上线。
居民在小区种的树归自己所有吗
杭州社保最低基数是多少钱一个月
明日星城·安景苑北门在什么地方啊,我要过去
联想手机a99的延时功能位置在哪
荣耀7有未接电话提示?
酸辣瓦块鱼怎么做好吃
cubase5为什么最小化或者打开QQ 聊天窗口时就
邢台市天使美术学校在什么地方啊,我要过去处
孩子脸上长粉刺怎么办
熊猫lol主播可以直播其他游戏吗
天为何而下雨大神们帮帮忙
陇子山怎么去啊,有知道地址的么
难忘的一回作文开头参考
catia怎么在平板两面相对的位置升凸台
推荐资讯
长安之星仪表盘换成新的了,公里数怎么调到以
看补充我发不了题,百度真垃圾啊
8上科学电于磁
在离婚案中有借款事实,但没写借条,事后补写
陶记炒货地址在什么地方,想过去办事
世界上最早的水稻和的农业生产区域分别位于我
劳务公司的固定资产发电机记入哪个科目
本人需要开夜食店,要需要哪些东西啊
曾宇晨,这个名字好吗
有没有不用砸装备的免费网游啊?
我要离婚还有两个孩子,我老公外面有欠钱我们
车子的官方指导价是裸车价的意思还是全部连上
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?