bmp字节对齐公式

linebyte = (bmpwidth*位数/8+3)/4*4;
//位数÷8即为每个像元占用字节数,bmpwidth*位数/8为有效字节数,在此基础上填充0
这是用来计算位图每行占多少个字节;
灰度图像(biBitCount=8)彩色图像(biBitCount=24)
bmpWidth是位图的宽度,也就是每行有多少个像素块
在计算机中如果你是整形 (n)除以(n+i)都是等于0的,(n和i都是自然数)
存储图像数据每行字节数为4的倍数
所以+3是怕出现不满足4的倍数这种情况
如果是4的倍数则结果和不+3的结果是一样的
如果不是4的倍数则结果进1位

/4*4除以四在乘以四是把数据归为4的倍数。
不够4的倍数就把余数约掉。只留商。
举个例子整形的话17/4=4(正常是4又1/4)而计算机直接算出来等于4
再乘以四就等于16
也就是说把17归为4的倍数=16;
int linebyteout = (widthout * pixelbyte + 3)/ 4 * 4;
//linebyte 是每行像素所占用的字节数
int pixelbyte = bitcount/8;
//pixelbyte是每个像素所占的字节数

因此,在这个遍历所有像素的循环中
i是行数,j是列数,k是像素的通道
for( k = 0 ; k < pixelbyte ; k ++ ){
      *(imgout + i * linebyteout + j * pixelbyte + k )
         = *(imgin + Iv * linebytein + Iu * pixelbyte + k);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值