bmp图像大小计算方式

以一个例子来学习BMP图像大小计算方式。

假设图像为95 * 100(单位为像素),位深度bitCount =1

首先计算图像每行字节数,直接95 * 1/8肯定是不行的,因为这没有考虑内存对齐。由于Windows在进行行扫描的时候最小的单位为4个字节,所以我们以4字节为单位计算图像的每行字节数,即width * bitCount/32,95 * 1%32 = 2(DWORD),这样算出来的结果就是以4字节为单位,windows进行行扫描的时候就不会出现扫描不到一整个4字节的情况,然而这样还是有问题的,它是一种向下取整,会损失像素信息,95 * 1/32=31,这31比特,不到4字节的信息就没被存储。所以我们要向上取整,小于4字节的部分用4字节存储,多余的部分用0填充就是内存对齐了,向上取整的方式为(width*bitCount+31)/32,这样就能达到向上取整的效果,(95 * 1+31)/32 =3(单位为DWORD,以4字节为单位进行存储,不到4字节的部分也用4字节存储,如果像素信息填不满4字节,剩下的用0填充。刚刚多余了31bit现在就是用第3个4字节进行存储,填不满第3个4字节,那么剩余的部分用0填充),最后,我们再在结果后面乘以一个4,把DWORD转化为Byte:(width * bitCount + 31) / 32 * 4,所以该例子的行字节数就是12字节。所以最终求行字节数的公式就是:

LineBytes = (width * bitCount + 31) / 32 * 4

那么求整张图像的大小的公式就是:

ImageSize = (width * bitCount + 31) / 32 * 4*Height
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非鱼Swx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值