點陣圖四位元組對齊問題

LiuYinChina發表於2013-03-03

每行畫素位元組數計算方法

該演算法為:biWidthBytes = (biWidth * biBitCount + 31) / 32 * 4

biBitCount 為點陣圖位寬,32位BMP,位寬為32、24位BMP位寬為23、256色點陣圖位寬為8、純黑白點陣圖位寬為1、等等。

這是一種對齊演算法,對於BMP等點陣圖來說,要求是4位元組對齊,即每行位元組數必須為4的整數倍。

因為8bit等於1Byte,同時滿足以4位元組為對齊單位向下對齊,所以可以得:

biWidthBytes = (biWidth * biBitCount / 8 + 3) / 4 * 4

對於位寬不足8的點陣圖,有可能是多個畫素才佔用1Byte,所以應該將“/ 8”移出括號,進一步得:

biWidthBytes = (biWidth * biBitCount + 31) / 32 * 4

相關文章