电竞比分网-中国电竞赛事及体育赛事平台

分享

位圖操作函數(shù)WIDTHBYTES

 啟蒙彩魂 2011-04-03

一、定義

#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4);

計(jì)算圖像每行象素所占的字節(jié)數(shù)目,設(shè)置成4的整數(shù)倍

//=(((bits) + 31) / 8)

//=((( biWidth* biBitCount) + 31) / 8)

二、參數(shù)說明:

bits:一個(gè)btmap中一行像素的位數(shù)總和。

 

bits:=biWidth* biBitCount;

biWidth:像素個(gè)數(shù)

biBitCount:一個(gè)像素所占的位數(shù)

當(dāng)biBitCount=1時(shí),8個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=4時(shí),2個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=8時(shí),1個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=24時(shí),1個(gè)像素占3個(gè)字節(jié)

也就是一個(gè)像素占biBitCount/8個(gè)字節(jié)

三、實(shí)例:

對(duì)于2色圖,如果圖象寬是31,則每一行需要31位存儲(chǔ),合3個(gè)字節(jié)加7位,因?yàn)樽止?jié)數(shù)必須是4的整倍數(shù),所以應(yīng)該是4,而此時(shí)的 biWidth=31, biBitCount=1, WIDTHBYTES(31*1)=4,和我們?cè)O(shè)想的一樣。

舉一個(gè)256色的例子,如果圖象寬是31,則每一行需要31個(gè)字節(jié)存儲(chǔ),因?yàn)樽止?jié)數(shù)必須是4的整倍數(shù),所以應(yīng)該是32,而此時(shí)的biWidth=31, biBitCount=8, WIDTHBYTES(31*8)=32。

四、相關(guān)知識(shí)說明

1.將圖像文件寬度設(shè)置成4的整數(shù)倍,只有bmp格式要求采用,其他格式的圖像并不要求是4的倍數(shù)。

2.bmp格式采用這一做法,我想是為了考慮訪問的速度。從文件讀出圖像數(shù)據(jù)時(shí),一次讀4個(gè)字節(jié)比一次讀1個(gè)字節(jié)快。但如果圖像文件不是4的倍數(shù)時(shí),每行最后的像素就不可能[注]采用一次讀4個(gè)字節(jié)(否則就會(huì)把下一行的像素也讀出)。當(dāng)然,你仍然可以讀出的4字節(jié)來,但必須處理:將其中幾個(gè)字節(jié)放在本行,而其余的顯示到下一行. 但顯然這很不方便,要影響速度。

3. 位圖數(shù)據(jù)記錄了位圖的每一個(gè)像素值,記錄順序是在掃描行內(nèi)是左到右,掃描行之間是從下到上。Windows規(guī)定一個(gè)掃描行所占的字節(jié)數(shù)必須是4的倍數(shù)(即以long為單位),不足的以0填充

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多