首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

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

2012-03-13 
求解根据位图的每行像素点数和位数计算每行字节数的公式?我看到一个根据位图的每行像素点数和位数计算每行

求解根据位图的每行像素点数和位数计算每行字节数的公式?
我看到一个根据位图的每行像素点数和位数计算每行字节数的公式,请问为什么这样计算?

(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

热点排行