图形图像学习心得——bmp图像大小biSizeImage算法公式由来

csdn论坛搜索关键字:

biSizeImage

VC/MFC分区——图形处理/算法

主要链接:

http://topic.csdn.net/u/20070929/13/9ED13464-121E-401E-B827-91E3BF5F0036.html

http://topic.csdn.net/u/20100114/21/0A67123E-1407-4FC0-B4E0-6D27FB8626C2.html

http://topic.csdn.net/u/20100116/17/4590fdf6-91c7-49a6-a76f-fa3effbae759.html

 

关键心得:

 

biSizeImage=(biWidth*biBitCount+31)/32*4*biHeight其中,biWidth*biBitCount是每一行图像占用的位数,除以8是每行图像占用的字节数,要为4的整数倍,所以除以32再乘以4
31是按整数除法自动取整的原则来的,其保证每行图像字节数必须是4的整倍数!
举一个例子,对于2色图,如果图象宽是31,则每一行需要31位存储,合3个字节加7位,因为字节数必须是4的整倍数,所以应该是4。所以补齐时需要加上4个字节数即32位

 

===================================

1:biWidth = 241 是位图的宽度而不是字节数目
2:(bits)其实需要输入:(biWidth * biBitCount),
3:WIDTHBYTES()根据输入(biWidth*biBitCount)而得出行字节数,而扫描行字节数乘以扫描行总数(位图的高度biHeight),就得出位数据的实际字节数目,估计你是理解错误了.
4:那估计是乱写的,正确是不能把 (xx)/32*4写成(xx)/8的,在计算机那是不相等的,举例:
width = 2,bpp = 8那么行字节数应该是
(2*8+31)/32*4 得4个字节.
(2*8+31)/8 得5个字节.
有少少常识的都知道,上面那个是对的,下面那个是错的,原因那些家伙根本不理解"对齐"的意思,片面地把"/32*4"合成为"/8"来误人误已. hoho.

你可能感兴趣的:(c,算法,存储,图形,2010)