久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

轉(zhuǎn)貼:BMP位圖格式詳解 一

 杰杰梅梅一生一世 2010-11-07

位圖格式 BMP是bitmap的縮寫形式,bitmap顧名思義,,就是位圖也即Windows位圖,。它一般由4部分組成:文件頭信息塊、圖像描述信息塊、顏色表(在真彩色模式無(wú)顏色表)和圖像數(shù)據(jù)區(qū)組成。在系統(tǒng)中以BMP為擴(kuò)展名保存,。  

打開Windows的畫圖程序,,在保存圖像時(shí),可以看到三個(gè)選項(xiàng):2色位圖(黑白)、16色位圖、256色位圖和24位位圖,?!?/p>

現(xiàn)在講解BMP的4個(gè)組成部分:

1.文件頭信息塊

0000-0001 :文件標(biāo)識(shí),,為字母ASCII碼“BM”。

0002-0005 :文件大小。

0006-0009 :保留,,每字節(jié)以“00”填寫,。

000A-000D :記錄圖像數(shù)據(jù)區(qū)的起始位置。各字節(jié)的信息含義依次為:文件頭信息塊大小,,圖像描述信息塊的大小,,圖像顏色表的大小,保留(為01),。

2.圖像描述信息塊

000E-0011:圖像描述信息塊的大小,,常為28H。

0012-0015:圖像寬度,。

0016-0019:圖像高度,。

001A-001B:圖像的plane總數(shù)(恒為1)。

001C-001D:記錄像素的位數(shù),,很重要的數(shù)值,,圖像的顏色數(shù)由該值決定。

001E-0021:數(shù)據(jù)壓縮方式(數(shù)值位0:不壓縮,;1:8位壓縮,;2:4位壓縮)。

0022-0025:圖像區(qū)數(shù)據(jù)的大小,。

0026-0029:水平每米有多少像素,,在設(shè)備無(wú)關(guān)位圖(.DIB)中,每字節(jié)以00H填寫,。

002A-002D:垂直每米有多少像素,,在設(shè)備無(wú)關(guān)位圖(.DIB)中,每字節(jié)以00H填寫,。

002E-0031:此圖像所用的顏色數(shù),,如值為0,表示所有顏色一樣重要,。

3.顏色表

顏色表的大小根據(jù)所使用的顏色模式而定:2色圖像為8字節(jié),;16色圖像位64字節(jié),;256色圖像為1024字節(jié)。其中,,每4字節(jié)表示一種顏色,,并以B(藍(lán)色),、G(綠色),、R(紅色),、alpha(32位位圖的透明度值,一般不需要),。即首先4字節(jié)表示顏色號(hào)0的顏色,,接下來(lái)表示顏色號(hào)1的顏色,依此類推,。

4.圖像數(shù)據(jù)區(qū)   

顏色表接下來(lái)位是位圖文件的圖像數(shù)據(jù)區(qū),,在此部分記錄著每點(diǎn)像素對(duì)應(yīng)的顏色號(hào),其記錄方式也隨顏色模式而定,,既2色圖像每點(diǎn)占1位,;16色圖像每點(diǎn)占4位;256色圖像每點(diǎn)占8位,;真彩色圖像每點(diǎn)占24位,。所以,整個(gè)數(shù)據(jù)區(qū)的大小也會(huì)隨之變化,。究其規(guī)律而言,,可的出如下計(jì)算公式:圖像數(shù)據(jù)信息大小=(圖像寬度*圖像高度*記錄像素的位數(shù))/8。 然而,,未壓縮的圖像信息區(qū)的大小,。除了真彩色模式外,其余的均大于或等于數(shù)據(jù)信息的大小,。這是為什么呢,?原因有兩個(gè):  

1.        BMP文件記錄一行圖像是以字節(jié)為單位的。因此,,就不存在一個(gè)字節(jié)中的數(shù)據(jù)位信息表示的點(diǎn)在不同的兩行中,。也就是說(shuō),設(shè)顯示模式位16色,,在每個(gè)字節(jié)分配兩個(gè)點(diǎn)信息時(shí),,如果圖像的寬度位奇數(shù),那么最后一個(gè)像素點(diǎn)的信息將獨(dú)占一個(gè)字節(jié),,這個(gè)字節(jié)的后4位將沒(méi)有意義,。接下來(lái)的一個(gè)字節(jié)將開始記錄下一行的信息?!?/p>

2.        為了顯示的方便,,除了真彩色外,,其他的每中顏色模式的行字節(jié)數(shù)要用數(shù)據(jù)“00”補(bǔ)齊為4的整數(shù)倍,。如果顯示模式為16色,當(dāng)圖像寬為19時(shí),,存儲(chǔ)時(shí)每行則要補(bǔ)充4-(19/2+1)%4=2個(gè)字節(jié)(加1是因?yàn)槔锩嬗幸粋€(gè)像素點(diǎn)要獨(dú)占了一字節(jié)),。如果顯示模式為256色,,當(dāng)圖像寬為19時(shí),每行也要補(bǔ)充4-19%4=1個(gè)字節(jié),。

bmp文件大體上分成四個(gè)部分,。

位圖文件頭BITMAPFILEHEADER ,、位圖信息頭BITMAPINFOHEADER ,、調(diào)色板Palette 、實(shí)際的位圖數(shù)據(jù)ImageDate

第一部分為位圖文件頭BITMAPFILEHEADER,,是一個(gè)結(jié)構(gòu),,其定義如下:

typedef unsigned char BYTE

typedef unsigned short WORD

typedef unsigned long DWORD

typedef struct tagBITMAPFILEHEADER {

WORD bfType; //類型名,必須是0x424D,,即字符串“BM”,

DWORD bfSize; //文件大小

WORD bfReserved1; //保留字,,不考慮

WORD bfReserved2; //保留字,,同上

DWORD bfOffBits; //實(shí)際位圖數(shù)據(jù)的偏移字節(jié)數(shù),即前三個(gè)部分長(zhǎng)度之和

} BITMAPFILEHEADER;

第二部分為位圖信息頭BITMAPINFOHEADER,,也是一個(gè)結(jié)構(gòu),,其定義如下:

typedef struct tagBITMAPINFOHEADER{

DWORD biSize; //指定此結(jié)構(gòu)體的長(zhǎng)度,,為40

LONG biWidth; //位圖寬

LONG biHeight; //位圖高

WORD biPlanes; //平面數(shù),為1

WORD biBitCount //采用顏色位數(shù),,可以是1,,2,4,,8,,16,24,,新的可以是32

DWORD biCompression; //壓縮方式,,可以是0,1,,2,,其中0表示不壓縮

DWORD biSizeImage; //實(shí)際位圖數(shù)據(jù)占用的字節(jié)數(shù)

LONG biXPelsPerMeter; //X方向分辨率

LONG biYPelsPerMeter; //Y方向分辨率

DWORD biClrUsed; //使用的顏色數(shù),如果為0,,則表示默認(rèn)值(2^顏色位數(shù))

DWORD biClrImportant; //重要顏色數(shù),,如果為0,則表示所有顏色都是重要的

} BITMAPINFOHEADER;

第三部分為調(diào)色板Palette,,當(dāng)然,,這里是對(duì)那些需要調(diào)色板的位圖文件而言的,。24位和32位是不需要調(diào)色板的。

typedef struct tagRGBQUAD {

BYTE rgbBlue; //該顏色的藍(lán)色分量

BYTE rgbGreen; //該顏色的綠色分量

BYTE rgbRed; //該顏色的紅色分量

BYTE rgbReserved; //保留值

} RGBQUAD;

第四部分就是實(shí)際的圖象數(shù)據(jù)了,。對(duì)于用到調(diào)色板的位圖,,圖象數(shù)據(jù)就是該象素顏在調(diào)色板中的索引值。對(duì)于真彩色圖,,圖象數(shù)據(jù)就是實(shí)際的R,、G、B值,。對(duì)于2色位圖,,用1位就可以表示該象素的顏色(一般0表示黑,1表示白),,所以一個(gè)字節(jié)可以表示8個(gè)象素,。對(duì)于16色位圖,用4位可以表示一個(gè)象素的顏色,,所以一個(gè)字節(jié)可以表示2個(gè)象素,。對(duì)于256色位圖,一個(gè)字節(jié)剛好可以表示1個(gè)象素,。對(duì)于真彩色圖,,三個(gè)字節(jié)才能表示1個(gè)象素。要注意兩點(diǎn): (1) 每一行的字節(jié)數(shù)必須是4的整倍數(shù),,如果不是,,則需要補(bǔ)齊。 (2) 一般來(lái)說(shuō),,.bMP文件的數(shù)據(jù)從下到上,,從左到右的。也就是說(shuō),,從文件中最先讀到的是圖象最下面一行的左邊第一個(gè)象素,,然后是左邊第二個(gè)象素……接下來(lái)是倒數(shù)第二行左邊第一個(gè)象素,左邊第二個(gè)象素……依次類推 ,,最后得到的是最上面一行的最右一個(gè)象素,。

16色系統(tǒng)調(diào)色板:

0 = RGB( 0, 0, 0) = 0x00000000;

1 = RGB(128, 0, 0) = 0x00000080;

2 = RGB( 0,128, 0) = 0x00008000;

3 = RGB(128,128, 0) = 0x00008080;

4 = RGB( 0, 0,128) = 0x00800000;

5 = RGB(128, 0,128) = 0x00800080;

6 = RGB( 0,128,128) = 0x00808000;

7 = RGB(128,128,128) = 0x00808080;

8 = RGB(192,192,192) = 0x00c0c0c0;

9 = RGB(255, 0, 0) = 0x000000ff;

10 = RGB( 0,255, 0) = 0x0000ff00;

11 = RGB(255,255, 0) = 0x0000ffff;

12 = RGB( 0, 0,255) = 0x00ff0000;

13 = RGB(255, 0,255) = 0x00ff00ff;

14 = RGB( 0,255,255) = 0x00ffff00;

15 = RGB(255,255,255) = 0x00ffffff;

圖像數(shù)據(jù)起始:000A-000D

圖像數(shù)據(jù)大小:0022-0025

圖像信息大?。?00E-0011

圖像寬度:0012-0015

圖像高度:0016-0019

    本站是提供個(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)論公約

    類似文章 更多