专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

求解根据位图的每行像素点数和位数计算每行字节数的公式?该如何处理

发布时间:2011-06-27 20:40:16 文章来源:www.iduyao.cn 采编人员:星星草
求解根据位图的每行像素点数和位数计算每行字节数的公式?
我看到一个根据位图的每行像素点数和位数计算每行字节数的公式,请问为什么这样计算?

(mImageWidth * (mImageBitCount / 8) + 3) & ~3;

mImageWidth 位图宽度
mImageBitCount 位图的点位数

------解决方案--------------------
8bit占一个字节,图像每行的字节数必须是4的倍数,我没见过这个公式,但是
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)这个公式是经常用的
------解决方案--------------------
(mImageWidth * (mImageBitCount / 8) + 3) /4 *4
解释:
其中mImageWidth * (mImageBitCount / 8)为存储像素值所需的每行字节数。我们不妨将其设为b。
现在公式就变成了(b+3)/4*4。此处的除法为整除运算,因为每一行必须是4的倍数。所以必须要填充一定数目的无意义的字节。如b=1022,则每行字节数必须为(1022+3)/4*4=1024。

------解决方案--------------------
& ~3
和 /4 *4的效果是一样的。
应为为4的倍数所以对于一个二进制表示来说最后两位为0.所以可以用3的取反来做位与
------解决方案--------------------
(nImageWidth*nBitCount+31)/32*4;
nImageWidth为图像宽度;nBitCount为每个像素所占的位数,如:二值为1,灰度为8,真彩24
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: