BMP文件格式

偶爾在網上看到大神的筆記,現系統的學習一遍BMP格式數組

選用的BMP文件爲 灰色lena圖佈局

用EditPlus以十六進制打開圖片:學習

BMP介紹

BMP文件,又叫位圖,是Windows中使用的圖片格式。.net

文件格式:orm

一、bmp文件頭(bmp file header):提供文件的格式、大小等信息blog

二、位圖信息頭(bitmap information):提供圖像數據的尺寸、位平面數、壓縮方式、顏色索引等信息索引

三、調色板(color palette):可選,如使用索引來表示圖像,調色板就是索引與其對應的顏色的映射表圖片

四、位圖數據(bitmap data):就是圖像數據內存

真彩色

24位圖像,即R、G、B三種顏色各用8bit表示,稱爲真彩色,這種狀況下不須要調色板,即位圖信息後緊跟着的就是位圖數據get

預備知識

1. 在BMP文件中,若是一個數據須要用幾個字節來表示的話,那麼該數據的存放字節順序爲「低地址村存放低位數據,高地址存放高位數據。如數據0x1756在內存中的存儲順序爲:

                                  

 

 

 

這種存儲方式稱爲小端方式(little endian) , 與之相反的是大端方式(big endian)。

2.  如下全部分析均以字節爲序號單位進行。

   下面咱們對從文件中拉出來的數據進行剖析:

文件頭

Windows爲bmp文件頭做出以下定義:

typedef struct tagBITMAPFILEHEADER 
{  
	UINT16 bfType;    //文件類型,2Byte
	DWORD bfSize;  //文件大小, 4Byte
	UINT16 bfReserved1;   // 保留字段1,  2Byte
	UINT16 bfReserved2;  // 保留字段2, 2Byte
	DWORD bfOffBits;    // 數據與文件頭的偏移量, 4Byte
} BITMAPFILEHEADER;

其中:

對照文件,咱們可見:

一、1-2:42 4d 爲「BM」,表示Windows支持的位圖格式,即指是BMP文件

二、3-5: 36 04 01 00 即0X00010436 等於66614 約爲65kb

三、6-9:00 00  00 00 保留字段1和2

四、a-d:36 04 00 00 即0X00000436等於1078,即數據從1078處開始

一共14個字節

信息頭

Windows定義信息頭結構體以下:

對照數據文件:

一、0e-11:28 00 00 00 即0x00000028 等於40,即信息頭大小爲40bit

二、12-15:00 01 00 00 即0x00000100等於256,即圖像寬度爲255像素

三、16-19:00 01 00 00 即0x00000100等於256,即圖像高度爲255像素,且這是一個正數,說明圖像數據是從圖像左下角到右上角排列的

四、1a-1b:0100 即0x00010,等於1,即顏色平面數爲1

五、1c-1d:0800 即0x0008.等於8,即每一個像素佔8bit

六、1e-21:00 00 00 00 即0,BI_RGB格式

七、22-25:00 00 01 00 即0x00010000 等於65536.指圖像大小

八、26-29:00 00 00 00 等於0.水平分辨率

九、2a-2d:00 00 00 00 等於0 垂直分辨率

十、2e-31:00 01 00 00 即0x00000100 等於256,指實際使用的顏色索引數256

十一、32-35:00 00 00 00 即0,指重要的顏色索引數爲0

至此,文件頭+信息頭 = 64Byte

調色板

一張映射表,佈局想二維數組[N][4],N指總的顏色所引數,每行四個元素對應B、G、R和Alpha值,一個份量一個字節,若無透明通道,則Alpha爲0

對照數據文件:

本圖中,N=256.即256個顏色索引

索引 B  G R Alpha
0 00 00 00 00
1 01 01 01 00
2 02 02 02 00
3 03 03 03 00
4 04 04 04 00
5 05 05 05 00
..... ...... ...... ...... ......

一共256種顏色,每一個顏色佔一個字節,一共是1024個字節,加上文件頭和信息頭的54字節,一共是1078個字節,即在數據以前有1078個字節

位圖數據

每一個像素佔一個字節,取得該字節後,以該字節爲索引查詢相應的顏色,並顯示到相應的顯示設備上,因爲信息頭中圖像的高度爲正數,故位圖數據在文件中排列是從左下角到右上角,以行爲主序排列的

參考

一、BMP文件格式詳解

相關文章
相關標籤/搜索