您好,現(xiàn)在冰冰來(lái)為大家解答以上的問(wèn)題。位圖文件的大小怎么算,位圖文件的大小和位圖的大小相信很多小伙伴還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
1、BMP BMP是一種與硬件設(shè)備無(wú)關(guān)的圖像文件格式,使用非常廣。
2、它采用位映射存儲(chǔ)格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。
3、BMP文件的圖像深度可選lbit、4bit、8bit及24bit。
4、BMP文件存儲(chǔ)數(shù)據(jù)時(shí),圖像的掃描方式是按從左到右、從下到上的順序。
5、 由于BMP文件格式是Windows環(huán)境中交換與圖有關(guān)的數(shù)據(jù)的一種標(biāo)準(zhǔn),因此在Windows環(huán)境中運(yùn)行的圖形圖像軟件都支持BMP圖像格式。
6、 典型的BMP圖像文件由三部分組成:位圖文件頭數(shù)據(jù)結(jié)構(gòu),它包含BMP圖像文件的類型、顯示內(nèi)容等信息;位圖信息數(shù)據(jù)結(jié)構(gòu),它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。
7、 具體數(shù)據(jù)舉例: 如某BMP文件開(kāi)頭: 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ù)陣列,在上圖中已用*分隔。
8、 一、圖像文件頭 1)1:(這里的數(shù)字代表的是"字",即兩個(gè)字節(jié),下同)圖像文件頭。
9、424Dh=’BM’,表示是Windows支持的BMP格式。
10、 2)2-3:整個(gè)文件大小。
11、4690 0000,為00009046h=36934。
12、 3)4-5:保留,必須設(shè)置為0。
13、 4)6-7:從文件開(kāi)始到位圖數(shù)據(jù)之間的偏移量。
14、4600 0000,為00000046h=70,上面的文件頭就是35字=70字節(jié)。
15、 5)8-9:位圖圖信息頭長(zhǎng)度。
16、 6)10-11:位圖寬度,以像素為單位。
17、8000 0000,為00000080h=128。
18、 7)12-13:位圖高度,以像素為單位。
19、9000 0000,為00000090h=144。
20、 8)14:位圖的位面數(shù),該值總是1。
21、0100,為0001h=1。
22、 二、位圖信息頭 9)15:每個(gè)像素的位數(shù)。
23、有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增強(qiáng)型真彩色)。
24、1000為0010h=16。
25、 10)16-17:壓縮說(shuō)明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放)。
26、RLE簡(jiǎn)單地說(shuō)是采用像素?cái)?shù)+像素值的方式進(jìn)行壓縮。
27、T408采用的是位域存放方式,用兩個(gè)字節(jié)表示一個(gè)像素,位域分配為r5b6g5。
28、圖中0300 0000為00000003h=3。
29、 11)18-19:用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小,該數(shù)必須是4的倍數(shù),數(shù)值上等于位圖寬度×位圖高度×每個(gè)像素位數(shù)。
30、0090 0000為00009000h=80×90×2h=36864。
31、 12)20-21:用象素/米表示的水平分辨率。
32、A00F 0000為0000 0FA0h=4000。
33、 13)22-23:用象素/米表示的垂直分辨率。
34、A00F 0000為0000 0FA0h=4000。
35、 14)24-25:位圖使用的顏色索引數(shù)。
36、設(shè)為0的話,則說(shuō)明使用所有調(diào)色板項(xiàng)。
37、 15)26-27:對(duì)圖象顯示有重要影響的顏色索引的數(shù)目。
38、如果是0,表示都重要。
39、 三、彩色板 16)28-35:彩色板規(guī)范。
40、對(duì)于調(diào)色板中的每個(gè)表項(xiàng),用下述方法來(lái)描述RGB的值: 1字節(jié)用于藍(lán)色分量 1字節(jié)用于綠色分量 1字節(jié)用于紅色分量 1字節(jié)用于填充符(設(shè)置為0) 對(duì)于24-位真彩色圖像就不使用彩色板,因?yàn)槲粓D中的RGB值就代表了每個(gè)象素的顏色。
41、 如,彩色板為00F8 0000 E007 0000 1F00 0000 0000 0000,其中: 00FB 0000為FB00h=1111100000000000(二進(jìn)制),是紅色分量的掩碼。
42、 E007 0000為 07E0h=0000011111100000(二進(jìn)制),是綠色分量的掩碼。
43、 1F00 0000為001Fh=0000000000011111(二進(jìn)制),是紅色分量的掩碼。
44、 0000 0000總設(shè)置為0。
45、 將掩碼跟像素值進(jìn)行“與”運(yùn)算再進(jìn)行移位操作就可以得到各色分量值。
46、看看掩碼,就可以明白事實(shí)上在每個(gè)像素值的兩個(gè)字節(jié)16位中,按從高到低取5、6、5位分別就是r、g、b分量值。
47、取出分量值后把r、g、b值分別乘以8、4、8就可以補(bǔ)齊第個(gè)分量為一個(gè)字節(jié),再把這三個(gè)字節(jié)按rgb組合,放入存儲(chǔ)器(同樣要反序),就可以轉(zhuǎn)換為24位標(biāo)準(zhǔn)BMP格式了。
48、 四、圖像數(shù)據(jù)陣列 17)17-...:每?jī)蓚€(gè)字節(jié)表示一個(gè)像素。
49、陣列中的第一個(gè)字節(jié)表示位圖左下角的象素,而最后一個(gè)字節(jié)表示位圖右上角的象素。
50、 五、存儲(chǔ)算法 BMP文件通常是不壓縮的,所以它們通常比同一幅圖像的壓縮圖像文件格式要大很多。
51、例如,一個(gè)800×600的24位幾乎占據(jù)1.4MB空間。
52、因此它們通常不適合在因特網(wǎng)或者其它低速或者有容量限制的媒介上進(jìn)行傳輸。
53、 根據(jù)顏色深度的不同,圖像上的一個(gè)像素可以用一個(gè)或者多個(gè)字節(jié)表示,它由n/8所確定(n是位深度,1字節(jié)包含8個(gè)數(shù)據(jù)位)。
54、圖片瀏覽器等基于字節(jié)的ASCII值計(jì)算像素的顏色,然后從調(diào)色板中讀出相應(yīng)的值。
55、更為詳細(xì)的信息請(qǐng)參閱下面關(guān)于位圖文件的部分。
56、 n位2n種顏色的位圖近似字節(jié)數(shù)可以用下面的公式計(jì)算: BMP文件大小約等于 54+4*2的n次方+(w*h*n)/8 ,其中高度和寬度都是像素?cái)?shù)。
57、 需要注意的是上面公式中的54是位圖文件的文件頭,是彩色調(diào)色板的大小。
58、另外需要注意的是這是一個(gè)近似值,對(duì)于n位的位圖圖像來(lái)說(shuō),盡管可能有最多2n中顏色,一個(gè)特定的圖像可能并不會(huì)使用這些所有的顏色。
59、由于彩色調(diào)色板僅僅定義了圖像所用的顏色,所以實(shí)際的彩色調(diào)色板將小于。
60、 如果想知道這些值是如何得到的,請(qǐng)參考下面文件格式的部分。
61、 由于存儲(chǔ)算法本身決定的因素,根據(jù)幾個(gè)圖像參數(shù)的不同計(jì)算出的大小與實(shí)際的文件大小將會(huì)有一些細(xì)小的差別。
本文就為大家分享到這里,希望小伙伴們會(huì)喜歡。