日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

BMP格式圖像文件詳析

工具軟件:工具軟件:Hex Workshop 或 UltraEdit
首先請(qǐng)注意所有的數(shù)值在存儲(chǔ)上都是按“高位放高位、低位放低位的原則”,如12345678h放在存儲(chǔ)器中就是7856 3412) 。下圖是導(dǎo)出來的開機(jī)動(dòng)畫的第一張圖加上文件頭后的16進(jìn)制數(shù)據(jù),以此為例進(jìn)行分析 。T408中的圖像有點(diǎn)怪,圖像是在電腦上看是垂直翻轉(zhuǎn)的 。在分析中為了簡(jiǎn)化敘述,以一個(gè)字(兩個(gè)字節(jié)為單位,如424D就是一個(gè)字)為序號(hào)單位進(jìn)行,“h”表示是16進(jìn)制數(shù) 。
424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2
......
BMP文件可分為四個(gè)部分:位圖文件頭、位圖信息頭、彩色板、圖像數(shù)據(jù)陣列,在上圖中已用*分隔 。
一、圖像文件頭
1)1:圖像文件頭 。424Dh=’BM’,表示是Windows支持的BMP格式 。
2)2-3:整個(gè)文件大小 。4690 0000,為00009046h=36934 。
3)4-5:保留,必須設(shè)置為0 。
4)6-7:從文件開始到位圖數(shù)據(jù)之間的偏移量 。4600 0000,為00000046h=70,上面的文件頭就是35字=70字節(jié) 。
5)8-9:位圖圖信息頭長(zhǎng)度 。
6)10-11:位圖寬度,以像素為單位 。8000 0000,為00000080h=128 。
7)12-13:位圖高度,以像素為單位 。9000 0000,為00000090h=144 。
8)14:位圖的位面數(shù),該值總是1 。0100,為0001h=1 。
二、位圖信息頭
9)15:每個(gè)像素的位數(shù) 。有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增強(qiáng)型真彩色) 。T408支持的是16位格式 。1000為0010h=16 。
10)16-17:壓縮說明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放) 。RLE簡(jiǎn)單地說是采用像素?cái)?shù) 像素值的方式進(jìn)行壓縮 。T408采用的是位域存放方式,用兩個(gè)字節(jié)表示一個(gè)像素,位域分配為r5b6g5 。圖中0300 0000為00000003h=3 。
11)18-19:用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小,該數(shù)必須是4的倍數(shù),數(shù)值上等于位圖寬度×位圖高度×每個(gè)像素位數(shù) 。0090 0000為00009000h=80×90×2h=36864 。
12)20-21:用象素/米表示的水平分辨率 。A00F 0000為0000 0FA0h=4000 。
13)22-23:用象素/米表示的垂直分辨率 。A00F 0000為0000 0FA0h=4000 。
14)24-25:位圖使用的顏色索引數(shù) 。設(shè)為0的話,則說明使用所有調(diào)色板項(xiàng) 。
15)26-27:對(duì)圖象顯示有重要影響的顏色索引的數(shù)目 。如果是0,表示都重要 。
三、彩色板
16)28-35:彩色板規(guī)范 。對(duì)于調(diào)色板中的每個(gè)表項(xiàng),用下述方法來描述RGB的值:
1字節(jié)用于藍(lán)色分量
1字節(jié)用于綠色分量
1字節(jié)用于紅色分量
1字節(jié)用于填充符(設(shè)置為0)
對(duì)于24-位真彩色圖像就不使用彩色表,因?yàn)槲粓D中的RGB值就代表了每個(gè)象素的顏色 。但是16位r5g6b5位域彩色圖像需要彩色表,看前面的圖,與上面的解釋不太對(duì)得上,應(yīng)以下面的解釋為準(zhǔn) 。
圖中彩色板為00F8 0000 E007 0000 1F00 0000 0000 0000,其中:
00FB 0000為FB00h=1111100000000000(二進(jìn)制),是紅色分量的掩碼 。
E007 0000為 07E0h=0000011111100000(二進(jìn)制),是綠色分量的掩碼 。
1F00 0000為001Fh=0000000000011111(二進(jìn)制),是紅色分量的掩碼 。
0000 0000總設(shè)置為0 。
將掩碼跟像素值進(jìn)行“與”運(yùn)算再進(jìn)行移位操作就可以得到各色分量值 。看看掩碼,就可以明白事實(shí)上在每個(gè)像素值的兩個(gè)字節(jié)16位中,按從高到低取5、6、5位分別就是r、g、b分量值 。取出分量值后把r、g、b值分別乘以8、4、8就可以補(bǔ)齊第個(gè)分量為一個(gè)字節(jié),再把這三個(gè)字節(jié)按rgb組合,放入存儲(chǔ)器(同樣要反序),就可以轉(zhuǎn)換為24位標(biāo)準(zhǔn)BMP格式了 。

推薦閱讀