青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

轉自:http://hi.baidu.com/kennlee/blog/item/52375eca63394743f31fe7d8.html

       1. BMP文件組成

  BMP文件由文件頭、位圖信息頭、顏色信息和圖形數據四部分組成。文件頭主要包含文件的大小、文件類型、圖像數據偏離文件頭的長度等信息;位圖信息頭包含圖象的尺寸信息、圖像用幾個比特數值來表示一個像素、圖像是否壓縮、圖像所用的顏色數等信息。顏色信息包含圖像所用到的顏色表,顯示圖像時需用到這個顏色表來生成調色板,但如果圖像為真彩色,既圖像的每個像素用24個比特來表示,文件中就沒有這一塊信息,也就不需要操作調色板。文件中的數據塊表示圖像的相應的像素值,需要注意的是:圖像的像素值在文件中的存放順序為從左到右,從下到上,也就是說,在BMP文件中首先存放的是圖像的最后一行像素,最后才存儲圖像的第一行像素,但對與同一行的像素,則是按照先左邊后右邊的的順序存儲的;另外一個需要讀者朋友關注的細節是:文件存儲圖像的每一行像素值時,如果存儲該行像素值所占的字節數為4的倍數,則正常存儲,否則,需要在后端補0,湊足4的倍數。

  2. BMP文件頭

  BMP文件頭數據結構含有BMP文件的類型、文件大小和位圖起始位置等信息。其結構定義如下:

1 typedef struct tagBITMAPFILEHEADER
2 {
3 WORD bfType; // 位圖文件的類型,必須為“BM”
4 DWORD bfSize; // 位圖文件的大小,以字節為單位
5 WORD bfReserved1; // 位圖文件保留字,必須為0
6 WORD bfReserved2; // 位圖文件保留字,必須為0
7 DWORD bfOffBits; // 位圖數據的起始位置,以相對于位圖文件頭的偏移量表示,以字節為單位
8 } BITMAPFILEHEADER;該結構占據14個字節。 



  3. 位圖信息頭

  BMP位圖信息頭數據用于說明位圖的尺寸等信息。其結構如下:

 1 typedef struct tagBITMAPINFOHEADER{
 2 DWORD biSize; // 本結構所占用字節數
 3 LONG biWidth; // 位圖的寬度,以像素為單位
 4 LONG biHeight; // 位圖的高度,以像素為單位
 5 WORD biPlanes; // 目標設備的平面數不清,必須為1
 6 WORD biBitCount// 每個像素所需的位數,必須是1(雙色), 4(16色),8(256色)或24(真彩色)之一
 7 DWORD biCompression; // 位圖壓縮類型,必須是 0(不壓縮),1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一
 8 DWORD biSizeImage; // 位圖的大小,以字節為單位
 9 LONG biXPelsPerMeter; // 位圖水平分辨率,每米像素數
10 LONG biYPelsPerMeter; // 位圖垂直分辨率,每米像素數
11 DWORD biClrUsed;// 位圖實際使用的顏色表中的顏色數
12 DWORD biClrImportant;// 位圖顯示過程中重要的顏色數
13 } BITMAPINFOHEADER;該結構占據40個字節。 



  注意:對于BMP文件格式,在處理單色圖像和真彩色圖像的時候,無論圖象數據多么龐大,都不對圖象數據進行任何壓縮處理,一般情況下,如果位圖采用壓縮格式,那么16色圖像采用RLE4壓縮算法,256色圖像采用RLE8壓縮算法。

  4. 顏色表

  顏色表用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結構,定義一種顏色。RGBQUAD結構的定義如下:

1 typedef struct tagRGBQUAD {
2     BYTErgbBlue;// 藍色的亮度(值范圍為0-255)
3     BYTErgbGreen; // 綠色的亮度(值范圍為0-255)
4     BYTErgbRed; // 紅色的亮度(值范圍為0-255)
5     BYTErgbReserved;// 保留,必須為0
6 } RGBQUAD; 



  顏色表中RGBQUAD結構數據的個數由BITMAPINFOHEADER 中的biBitCount項來確定,當biBitCount=1,4,8時,分別有2,16,256個顏色表項,當biBitCount=24時,圖像為真彩色,圖像中每個像素的顏色用三個字節表示,分別對應R、G、B值,圖像文件沒有顏色表項。位圖信息頭和顏色表組成位圖信息,BITMAPINFO結構定義如下:

1 
2 typedef struct tagBITMAPINFO {
3 BITMAPINFOHEADER bmiHeader; // 位圖信息頭
4 RGBQUAD bmiColors[1]; // 顏色表
5 } BITMAPINFO; 



  注意:RGBQUAD數據結構中,增加了一個保留字段rgbReserved,它不代表任何顏色,必須取固定的值為“0”,同時,RGBQUAD結構中定義的顏色值中,紅色、綠色和藍色的排列順序與一般真彩色圖像文件的顏色數據排列順序恰好相反,既:若某個位圖中的一個像素點的顏色的描述為“00,00,ff,00”,則表示該點為紅色,而不是藍色。

  5. 位圖數據

  位圖數據記錄了位圖的每一個像素值或該對應像素的顏色表的索引值,圖像記錄順序是在掃描行內是從左到右,掃描行之間是從下到上。這種格式我們又稱為Bottom_Up位圖,當然與之相對的還有Up_Down形式的位圖,它的記錄順序是從上到下的,對于這種形式的位圖,也不存在壓縮形式。位圖的一個像素值所占的字節數:當biBitCount=1時,8個像素占1個字節;當biBitCount=4時,2個像素占1個字節;當biBitCount=8時,1個像素占1個字節;當biBitCount=24時,1個像素占3個字節,此時圖像為真彩色圖像。當圖像不是為真彩色時,圖像文件中包含顏色表,位圖的數據表示對應像素點在顏色表中相應的索引值,當為真彩色時,每一個像素用三個字節表示圖像相應像素點彩色值,每個字節分別對應R、G、B分量的值,這時候圖像文件中沒有顏色表。上面我已經講過了,Windows規定圖像文件中一個掃描行所占的字節數必須是4的倍數(即以字為單位),不足的以0填充,圖像文件中一個掃描行所占的字節數計算方法:

 1        DataSizePerLine= (biWidth* biBitCount+31)/8// 一個掃描行所占的字節數 
 2 
 3 或者
 4           DataSizePerLine= (biWidth* biBitCount+31)/32 * 4// 一個掃描行所占的字節數 
 5 
 6 (如果biBitCount == 8 或24) 
 7 
 8          DataSizePerLine= (biWidth* 3+3)/4*4// 一個掃描行所占的字節數 
 9 
10 
11 
12        DataSizePerLine= (biWidth*1+3)/4*4// 一個掃描行所占的字節數 
13 


  位圖數據的大小按下式計算(不壓縮情況下):

  DataSize= DataSizePerLine* biHeight。

  上述是BMP文件格式的說明,搞清楚了以上的結構,就可以正確的操作圖像文件,對它進行讀或寫操作了。

posted on 2009-09-27 16:00 會飛的兔子 閱讀(1523) 評論(0)  編輯 收藏 引用 所屬分類: 框架/圖像/算法
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美午夜一区| 蜜臀久久99精品久久久久久9| 免费人成网站在线观看欧美高清| 亚洲一区二区三区高清 | 久热精品视频在线免费观看| 在线亚洲高清视频| 亚洲激情一区| 老鸭窝亚洲一区二区三区| 午夜精品久久久久久久白皮肤 | 99视频在线观看一区三区| 免费在线国产精品| 久久久999精品免费| 亚洲欧美另类国产| 亚洲一区在线直播| 亚洲最快最全在线视频| 亚洲精品影视| 亚洲国产美女久久久久| 红杏aⅴ成人免费视频| 国产伦精品一区| 国产精品国产三级国产| 欧美日韩无遮挡| 欧美国产综合一区二区| 老司机午夜免费精品视频 | 一区二区三区国产精品| 亚洲日本国产| 亚洲黄色在线观看| 在线看视频不卡| 伊人久久噜噜噜躁狠狠躁| 激情偷拍久久| 激情久久五月天| 激情久久久久久久| 亚洲第一免费播放区| 永久免费视频成人| 亚洲成人在线视频网站| 亚洲黄色av一区| 在线观看国产精品网站| 在线国产精品一区| 亚洲国产影院| 日韩亚洲欧美成人| 中日韩美女免费视频网站在线观看 | 香蕉久久夜色精品| 欧美怡红院视频| 久久激情视频久久| 久久亚洲欧美| 欧美超级免费视 在线| 亚洲国产精品成人| 99re8这里有精品热视频免费| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区二区三区涩| 亚洲午夜激情| 欧美亚洲一区二区三区| 久久精品亚洲精品| 欧美成人a视频| 亚洲精品你懂的| 亚洲黄色高清| 在线视频精品一| 欧美一级久久久久久久大片| 久久综合久久美利坚合众国| 免费欧美日韩| 国产精品国产亚洲精品看不卡15| 国产日韩1区| 91久久香蕉国产日韩欧美9色| 一本大道久久a久久精品综合| 亚洲欧美日韩一区二区| 久久中文字幕一区二区三区| 亚洲国产精品尤物yw在线观看| 一本色道**综合亚洲精品蜜桃冫| 亚洲免费在线看| 另类天堂av| 国产精品久久7| 亚洲福利视频在线| 亚洲欧美电影在线观看| 老司机精品视频一区二区三区| 最新69国产成人精品视频免费| 亚洲一区欧美激情| 蜜桃av噜噜一区| 国产精品天美传媒入口| 91久久精品www人人做人人爽| 亚洲专区在线视频| 男人的天堂成人在线| 一本色道久久88亚洲综合88| 久久久久综合| 国产精品久久久久免费a∨| 在线视频成人| 午夜精品久久久久久久蜜桃app| 欧美国产先锋| 亚洲欧美日韩综合| 欧美精品久久久久久久久久| 国产亚洲欧美日韩精品| 在线综合亚洲欧美在线视频| 蜜臀av在线播放一区二区三区| 一本综合精品| 欧美激情一区二区三区在线视频观看 | 亚洲日本电影| 久久免费的精品国产v∧| 日韩一级二级三级| 老司机一区二区三区| 国产日韩视频| 亚洲一区免费视频| 亚洲国产精品专区久久| 久久精品亚洲一区二区| 国产精品男gay被猛男狂揉视频| 亚洲人成亚洲人成在线观看| 久久午夜视频| 午夜久久黄色| 国产精品欧美风情| 一区二区三区免费网站| 欧美黑人在线播放| 久久99在线观看| 国产伦精品一区二区三区高清| 99精品福利视频| 亚洲高清视频一区二区| 久久久久久久久久久久久9999| 国产精品一区毛片| 亚洲一区日韩| 99视频精品全国免费| 欧美日本韩国一区| 亚洲精品孕妇| 亚洲国产综合在线| 欧美v亚洲v综合ⅴ国产v| 1024成人网色www| 免费在线观看一区二区| 久久夜色精品国产欧美乱| 国内成人精品视频| 久久精品亚洲精品| 欧美在线一级视频| 国产永久精品大片wwwapp| 欧美中文字幕第一页| 香蕉成人伊视频在线观看 | 理论片一区二区在线| 久久精品国产在热久久 | 久久香蕉国产线看观看av| 伊人久久婷婷色综合98网| 狂野欧美一区| 久久久蜜桃精品| 永久555www成人免费| 欧美成人69av| 欧美—级高清免费播放| 一区二区成人精品 | 欧美成人精品在线播放| 亚洲麻豆视频| 一区二区欧美在线观看| 国产精品人成在线观看免费| 欧美亚洲日本网站| 久久精品首页| 亚洲人成人77777线观看| 亚洲激情视频在线| 欧美偷拍另类| 欧美在线国产精品| 久久久国产精品一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国产视频一区| 欧美午夜精品久久久久久久 | 亚洲在线观看免费视频| 亚洲欧美成人网| 在线免费高清一区二区三区| 亚洲精品国产系列| 国产精品欧美日韩| 久久网站热最新地址| 欧美激情亚洲精品| 亚洲欧美日韩国产另类专区| 久久精品国产综合精品| 99视频精品免费观看| 亚洲欧美国产精品桃花| 亚洲黄一区二区三区| 日韩视频在线免费观看| 国产免费亚洲高清| 欧美刺激性大交免费视频| 欧美三级日本三级少妇99| 久久久久久久综合色一本| 欧美韩国日本一区| 欧美在线观看视频一区二区三区 | 国产精品久久久久久模特| 久久人91精品久久久久久不卡| 欧美精品三级日韩久久| 欧美在线观看www| 欧美激情综合五月色丁香| 欧美在线亚洲在线| 欧美精品 国产精品| 久久高清国产| 欧美日韩调教| 免费在线成人| 国产欧美精品va在线观看| 亚洲国产成人久久| 国产一区二区三区直播精品电影| 亚洲欧洲精品一区二区三区| 国产精品无码永久免费888| 亚洲第一区在线| 国产日韩一级二级三级| 亚洲精品美女| 亚洲电影在线播放| 香蕉久久夜色精品国产使用方法| 99国产精品久久久久久久| 欧美在线观看天堂一区二区三区 | 国产日韩1区| 99精品国产高清一区二区| 亚洲国产一区二区视频| 久久超碰97中文字幕| 亚洲欧美日韩另类精品一区二区三区| 欧美波霸影院|