计算图像像素占字节数的纠结
来源:互联网 发布:农村淘宝商家入驻 编辑:程序博客网 时间:2024/06/04 20:03
- int imgBuffSize = (m_imgWidth*m_nBitCount/8+3)/4*4*m_imgHeight;
就是后面的+3让我纠结了一阵子。原来是图像的像素占的字节数为4的整数倍。
从网上找了一下得到结果:
我看到一个根据位图的每行像素点数和位数计算每行字节数的公式,请问为什么这样计算?
(mImageWidth * (mImageBitCount / 8) + 3) & ~3;
mImageWidth 位图宽度
mImageBitCount 位图的点位数
-----------------------------------------
------------------------------------------
#1楼 得分:10回复于:2010-08-26 20:36:34
8bit占一个字节,图像每行的字节数必须是4的倍数,我没见过这个公式,但是
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)这个公式是经常用的
-----------------------------------------
------------------------------------------
#2楼 得分:10回复于:2010-08-26 21:08:32
(mImageWidth * (mImageBitCount / 8) + 3) /4 *4
解释:
其中mImageWidth * (mImageBitCount / 8)为存储像素值所需的每行字节数。我们不妨将其设为b。
现在公式就变成了(b+3)/4*4。此处的除法为整除运算,因为每一行必须是4的倍数。所以必须要填充一定数目的无意义的字节。如b=1022,则每行字节数必须为(1022+3)/4*4=1024。
-----------------------------------------
------------------------------------------
#3楼 得分:10回复于:2010-08-26 21:11:05
& ~3
和 /4 *4的效果是一样的。
应为为4的倍数所以对于一个二进制表示来说最后两位为0.所以可以用3的取反来做位与
-----------------------------------------
------------------------------------------
#4楼 得分:10回复于:2010-08-26 22:30:28
(nImageWidth*nBitCount+31)/32*4;
nImageWidth为图像宽度;nBitCount为每个像素所占的位数,如:二值为1,灰度为8,真彩24
-----------------------------------------
------------------------------------------
#5楼 得分:0回复于:2010-08-27 10:37:18
(((bits) + 31) / 32 * 4) 这个公式未必正确
(mImageWidth * (mImageBitCount / 8) + 3) & ~3 绝对正确
-----------------------------------------
------------------------------------------
#6楼 得分:0回复于:2010-08-27 10:51:19
我的理解是:
(mImageWidth * (mImageBitCount / 8) 计算每行像素需要的字节数,此时可能会存在不足,比如 31*1/8 = 3.875 实际字节数应该是 4
计算出来的字节数应该是4的倍数,如果不足,最多相差 3 个字节,所以+3 就是
(mImageWidth * (mImageBitCount / 8) + 3) 此时计算出来的字节数绝对足够了,但可能还有多余,也不是4的倍数,比如 31*1/8+3 = 6 实际上只要 4 字节就可以了,于是要倒扣
4的倍数在二进制上就是最后两位为0,所以用 &~3 让最后两位为0
~3 就是让最后两位为0 &~3 就是让计算出来的数的二进制最后两位置为0,就可以被4整除了
希望我这个理解是正确的吧
---------------------------------------
- 计算图像像素占字节数的纠结
- 图像像素字节数
- 图像处理中像素点的问题:double、long、unsigned、int、char类型数据所占字节数
- 结构体所占字节数的计算
- 扫描行所占的字节数计算公式
- JS计算字符串所占字节数
- 正确计算文本所占字节数
- JS计算字符串所占字节数
- JS计算字符串所占字节数
- 变量占的字节数
- 纠结的图像字节对齐问题
- IplImage与位图的相互转换,Windows系统中一行像素所占的字节数为4的倍数
- 如何计算对象或者类型所占的内存字节数(各种总结)
- 如何计算对象或者类型所占的内存字节数
- 如何计算对象或者类型所占的内存字节数(各种总结)
- 计算机类所占的字节数
- 各种数据类型占的字节数
- 判断字符串所占的字节数
- s
- 初学c语言
- 一个准程序员的2011新年展望
- Android的一些Intent
- 在Android中使用Map需要注意的技巧
- 计算图像像素占字节数的纠结
- 分享WPF实现屏幕截图程序详解
- xna像素的碰撞检测
- linux内核学习(14)好无聊的代码
- 嵌入式必备技术
- 谁能解释这些方法,跪求!!!
- 什么是组件以及为什么使用组件
- 分享一篇关于C#对文件操作的日志,方法很全
- 关于csdn论坛登录的问题!