BMP圖片的解析,關於壓縮方式


在做一個顯示bmp圖片到lcd屏的時候,發現有些bmp圖顯示不對.

同樣是16bit bmp卻有差異.

就查了一下格式.

bmp文件格式

位圖文件的組成

結構名稱

符號

位圖文件頭(bitmap-file header)

BITMAPFILEHEADER

bmfh

位圖信息頭(bitmap-information header)

BITMAPINFOHEADER

bmih

彩色表(color table)

RGBQUAD

aColors[]

圖像數據陣列字節

BYTE

aBitmapBits[]

 

 

偏移量

域的名稱

大小

內容

 

 

 

圖像文件

0000h

標識符(Identifier)

2 bytes

兩字節的內容用來識別位圖的類型:

BM : Windows 3.1x, 95, NT,

BA :OS/2 Bitmap Array

CI :OS/2 Color Icon

CP :OS/2 Color Pointer

IC : OS/2 Icon

PT :OS/2 Pointer

 

0002h

File Size

1 dword

用字節表示的整個文件的大小

 

0006h

Reserved

1 dword

保留,設置為0

 

000Ah

Bitmap Data Offset

1 dword

從文件開始到位圖數據開始之間的數據(bitmap data)之間的偏移量

 

000Eh

Bitmap Header Size

1 dword

位圖信息頭(Bitmap Info Header)的長度,用來描述位圖的顏色、壓縮方法等。下面的長度表示:

28h - Windows 3.1x, 95, NT,

0Ch - OS/2 1.x

F0h - OS/2 2.x

 

0012h

Width

1 dword

位圖的寬度,以像素為單位

 

0016h

Height

1 dword

位圖的高度,以像素為單位

 

001Ah

Planes

1 word

位圖的位面數

圖像

信息

 

 

001Ch

Bits Per Pixel

1 word

每個像素的位數

1 - Monochrome bitmap

4 - 16 color bitmap

8 - 256 color bitmap

16 - 16bit (high color) bitmap

24 - 24bit (true color) bitmap

32 - 32bit (true color) bitmap

 

001Eh

Compression

1 dword

壓縮說明:

0 - none (也使用BI_RGB表示)

1 - RLE 8-bit / pixel (也使用BI_RLE4表示)

2 - RLE 4-bit / pixel (也使用BI_RLE8表示)

3 - Bitfields (也使用BI_BITFIELDS表示)

 

0022h

Bitmap Data Size

1 dword

用字節數表示的位圖數據的大小。該數必須是4的倍數

 

0026h

HResolution

1 dword

用像素/米表示的水平分辨率

 

002Ah

VResolution

1 dword

用像素/米表示的垂直分辨率

 

002Eh

Colors

1 dword

位圖使用的顏色數。如8-位/像素表示為100h或者 256.

 

0032h

Important Colors

1 dword

指定重要的顏色數。當該域的值等於顏色數時,表示所有顏色都一樣重要

調色板數據

0036h

Palette

N * 4 byte

調色板規范。對於調色板中的每個表項,這4個字節用下述方法來描述RGB的值:

  • 1字節用於藍色分量 
  • 1字節用於綠色分量 
  • 1字節用於紅色分量 
  • 1字節用於填充符(設置為0)

圖像數據

0436h

Bitmap Data

x bytes

該域的大小取決於壓縮方法,它包含所有的位圖數據字節,這些數據實際就是彩色調色板的索引號

 后來打印了一下頭信息的各個值發現,壓縮方式不一樣

Compression =0 或

Compression=3.

Compression=0時 rgb565使用3個字節即,R、G、B各占1個字節,共3個字節。

Compression=3時R、G、B總共占2個字節。 調色板數據會存儲三個掩碼。 RGB565,這三個值是0xF800、0x07E0、0x001F。

即取出2個字節的圖像數據與上0xF800就是R

 

其他壓縮方式較復雜,沒有使用到。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM