準備知識:
位:"位(bit)"是電子計算機中最小的數據單位。每一位的狀態只能是0或1,是計算機處理、存儲、傳輸數據時使用的二進制格式。
字節:8個二進制位構成1個"字節(Byte)",它是存儲空間的基本計量單位。1個字節可以儲存1個英文字母或者半個漢字,換句話說,1個漢字佔據2個字節的存儲空間。
像素:
位圖的一個像素值所佔的字節數:
當biBitCount=1時,8個像素佔1個字節;
當biBitCount=4時,2個像素佔1個字節;
當biBitCount=8時,1個像素佔1個字節;
當biBitCount=24時,1個像素佔3個字節,此時圖像爲真彩色圖像。
即:1個像素所佔的字節數是biBitCount/8
解決:
Windows規定圖像文件中一個掃描行所佔的字節數必須是4的倍數(即以字爲單位),不足的以0填充,圖像文件中一個掃描行所佔的字節數計算方法:
( biWidth*biBitCount+31)/32*4 一個掃描行所佔的字節數
biWidth 是圖像的寬度以像素爲單位,
biBitCount 是每個像素的位數,
biWidth*biBitCount 是一行所佔的位數
( biWidth*biBitCount+31) 把不滿4字節的補滿,使最終結果得出來的位數只會比原來的多(結尾有餘數,不滿4字節),或者不變(剛好以4個字節(32位)結束)
( biWidth*biBitCount+31)/32 分成一塊塊4字節(32位)
( biWidth*biBitCount+31)/32*4 前面對齊4字節結束。得出字節總和