?? bmp_fileformat.htm
字號:
<tr>
<td WIDTH="27"><font size="+0">圖象數(shù)據(jù)</font></td>
<td WIDTH="43"><font size="+0">根據(jù)BMP版本及調(diào)色板尺寸的不同而不同</font></td>
<td WIDTH="80"><font size="+0">Bitmap Data</font></td>
<td WIDTH="58"><font size="+0">xxx bytes</font></td>
<td WIDTH="287"><font size="+0">該域的大小取決于壓縮方法及圖像的尺寸和圖像的位深度,它包含所有的位圖數(shù)據(jù)字節(jié),這些數(shù)據(jù)可能是彩色調(diào)色板的索引號,也可能是實際的RGB值,這將根據(jù)圖像信息頭中的位深度值來決定。</font></td>
</tr>
</table>
</center></div>
<br><br><br><br>
<blockquote>
<b><font color="#FF0000"><p align="center">構(gòu)件詳解</font></b></p>
</blockquote>
<font size="+0" color="#7F007F"><b>
<p>1. 位圖文件頭</b></font> </p>
<p><font size="+0">位圖文件頭包含有關(guān)于文件類型、文件大小、存放位置等信息,在Windows
3.0以上版本的位圖文件中用BITMAPFILEHEADER結(jié)構(gòu)來定義:</font> </p>
<p><font size="+0">typedef struct tagBITMAPFILEHEADER { /* bmfh */</font>
<blockquote>
<font size="+0">UINT bfType;</font><br>
<font size="+0">DWORD bfSize;</font> <br>
<font size="+0">UINT bfReserved1;</font> <br>
<font size="+0">UINT bfReserved2;</font> <br>
<font size="+0">DWORD bfOffBits;</font><br>
</blockquote>
<font size="+0">
} BITMAPFILEHEADER;</font> </p>
<p><font size="+0">其中:</font> <br>
</p>
<table BORDER="0" CELLSPACING="0" WIDTH="557">
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bfType</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>說明文件的類型.(該值必需是0x4D42,也就是字符'BM'。我們不需要判斷OS/2的位圖標(biāo)識,這么做現(xiàn)在來看似乎已經(jīng)沒有什么意義了,而且如果要支持OS/2的位圖,程序?qū)⒆兊煤芊爆崱K?,在此只建議你檢察'BM'標(biāo)識) </font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bfSize</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>說明文件的大小,用字節(jié)為單位</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bfReserved1</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>保留,必須設(shè)置為0</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bfReserved2</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>保留,必須設(shè)置為0</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bfOffBits</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>說明從文件頭開始到實際的圖象數(shù)據(jù)之間的字節(jié)的偏移量。這個參數(shù)是非常有用的,因為位圖信息頭和調(diào)色板的長度會根據(jù)不同情況而變化,所以你可以用這個偏移值迅速的從文件中讀取到位數(shù)據(jù)。</font></p>
</blockquote>
</td>
</tr>
</table>
<p><font size="+0" color="#7F007F"><b>2. 位圖信息頭</b></font> </p>
<p><font size="+0">位圖信息用BITMAPINFO結(jié)構(gòu)來定義,它由位圖信息頭(bitmap-information
header)和彩色表(color table)組成,前者用BITMAPINFOHEADER結(jié)構(gòu)定義,后者用RGBQUAD結(jié)構(gòu)定義。BITMAPINFO結(jié)構(gòu)具有如下形式:</font>
</p>
<p><font size="+0">typedef struct tagBITMAPINFO { /* bmi */</font>
<blockquote>
<font size="+0">BITMAPINFOHEADER bmiHeader;</font><br>
<font size="+0">RGBQUAD bmiColors[1];</font><br>
</blockquote>
<font size="+0">
} BITMAPINFO;</font> </p>
<p><font size="+0">其中:</font> <br>
</p>
<table BORDER="0" CELLSPACING="0" WIDTH="557">
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bmiHeader</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>說明BITMAPINFOHEADER結(jié)構(gòu),其中包含了有關(guān)位圖的尺寸及位格式等信息</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="22%"><blockquote>
<font size="+0"><p>bmiColors</font></p>
</blockquote>
</td>
<td WIDTH="78%"><blockquote>
<font size="+0"><p>說明彩色表RGBQUAD結(jié)構(gòu)的陣列,其中包含索引圖像的真實RGB值。</font></p>
</blockquote>
</td>
</tr>
</table>
<p><font size="+0">BITMAPINFOHEADER結(jié)構(gòu)包含有位圖文件的大小、壓縮類型和顏色格式,其結(jié)構(gòu)定義為:</font>
</p>
<p><font size="+0">typedef struct tagBITMAPINFOHEADER { /* bmih */</font>
<blockquote>
<font size="+0">DWORD biSize;</font> <br>
<font size="+0">LONG biWidth;</font> <br>
<font size="+0">LONG biHeight;</font> <br>
<font size="+0">WORD biPlanes;</font> <br>
<font size="+0">WORD biBitCount;</font> <br>
<font size="+0">DWORD biCompression;</font> <br>
<font size="+0">DWORD biSizeImage;</font> <br>
<font size="+0">LONG biXPelsPerMeter;</font> <br>
<font size="+0">LONG biYPelsPerMeter;</font> <br>
<font size="+0">DWORD biClrUsed;</font> <br>
<font size="+0">DWORD biClrImportant;</font><br>
</blockquote>
<font size="+0">
} BITMAPINFOHEADER;</font> </p>
<p><font size="+0">其中:</font> <br>
</p>
<table BORDER="0" CELLSPACING="0" WIDTH="565">
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biSize</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>說明BITMAPINFOHEADER結(jié)構(gòu)所需要的字?jǐn)?shù)。注:這個值并不一定是BITMAPINFOHEADER結(jié)構(gòu)的尺寸,它也可能是sizeof(BITMAPV4HEADER)的值,或是sizeof(BITMAPV5HEADER)的值。這要根據(jù)該位圖文件的格式版本來決定,不過,就現(xiàn)在的情況來看,絕大多數(shù)的BMP圖像都是BITMAPINFOHEADER結(jié)構(gòu)的(可能是后兩者太新的緣故吧:-)。</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biWidth</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>說明圖象的寬度,以象素為單位</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biHeight</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>說明圖象的高度,以象素為單位。注:這個值除了用于描述圖像的高度之外,它還有另一個用處,就是指明該圖像是倒向的位圖,還是正向的位圖。如果該值是一個正數(shù),說明圖像是倒向的,如果該值是一個負(fù)數(shù),則說明圖像是正向的。大多數(shù)的BMP文件都是倒向的位圖,也就是時,高度值是一個正數(shù)。(注:當(dāng)高度值是一個負(fù)數(shù)時(正向圖像),圖像將不能被壓縮(也就是說biCompression成員將不能是BI_RLE8或BI_RLE4)。</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biPlanes</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>為目標(biāo)設(shè)備說明位面數(shù),其值將總是被設(shè)為1</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biBitCount</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>說明比特數(shù)/象素,其值為1、4、8、16、24、或32</font></p>
</blockquote>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biCompression</font></p>
</blockquote>
</td>
<td WIDTH="414"><font size="+0">說明圖象數(shù)據(jù)壓縮的類型。其值可以是下述值之一:</font>
<br>
<!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">
<!--msthemelist--><tr><td valign="baseline" width="42"><img src="urbbul1a.gif" width="20" height="20" hspace="11"></td><td valign="top" width="100%">BI_RGB:沒有壓縮; <br>
<!--msthemelist--></td></tr>
<!--msthemelist--><tr><td valign="baseline" width="42"><img src="urbbul1a.gif" width="20" height="20" hspace="11"></td><td valign="top" width="100%">BI_RLE8:每個象素8比特的RLE壓縮編碼,壓縮格式由2字節(jié)組成(重復(fù)象素計數(shù)和顏色索引);
<br>
<!--msthemelist--></td></tr>
<!--msthemelist--><tr><td valign="baseline" width="42"><img src="urbbul1a.gif" width="20" height="20" hspace="11"></td><td valign="top" width="100%">BI_RLE4:每個象素4比特的RLE壓縮編碼,壓縮格式由2字節(jié)組成 <br>
<!--msthemelist--></td></tr>
<!--msthemelist--><tr><td valign="baseline" width="42"><img src="urbbul1a.gif" width="20" height="20" hspace="11"></td><td valign="top" width="100%">BI_BITFIELDS:每個象素的比特由指定的掩碼決定。<br>
<!--msthemelist--></td></tr>
<!--msthemelist--></table>
</td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biSizeImage</font></p>
</blockquote>
</td>
<td WIDTH="414"><font size="+0">說明圖象的大小,以字節(jié)為單位。當(dāng)用BI_RGB格式時,可設(shè)置為0</font></td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biXPelsPerMeter</font></p>
</blockquote>
</td>
<td WIDTH="414"><font size="+0">說明水平分辨率,用象素/米表示</font></td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biYPelsPerMeter</font></p>
</blockquote>
</td>
<td WIDTH="414"><font size="+0">說明垂直分辨率,用象素/米表示</font></td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biClrUsed</font></p>
</blockquote>
</td>
<td WIDTH="414"><font size="+0">說明位圖實際使用的彩色表中的顏色索引數(shù)(設(shè)為0的話,則說明使用所有調(diào)色板項)</font></td>
</tr>
<tr>
<td WIDTH="147"><blockquote>
<font size="+0"><p>biClrImportant</font></p>
</blockquote>
</td>
<td WIDTH="414"><blockquote>
<font size="+0"><p>說明對圖象顯示有重要影響的顏色索引的數(shù)目,如果是0,表示都重要。</font></p>
</blockquote>
</td>
</tr>
</table>
<p><font size="+0">現(xiàn)就BITMAPINFOHEADER結(jié)構(gòu)作如下說明:</font> </p>
<p><b><font size="+0">(1) 彩色表的定位</font></b> </p>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -