關於部落格
  • 4876

    累積人氣

  • 0

    今日人氣

    0

    追蹤人氣

[轉] 點陣圖(Bitmap)檔案格式


更完整及原始來源: http://crazycat1130.pixnet.net/blog/post/1345538

補充: http://www.phate.tw/redirect.php?tid=2789&goto=lastpost

《點陣圖檔案結構》

點陣圖檔案由四個部份組成:
  1. Bitmap File Header
  2. Bitmap Info Header
  3. Color Table (Palette)
  4. Bitmap Array

Note: 以下欄位資料皆為 little-endian! Little-Endian 的意思是:若某個欄位值為 0x1234,當你將BMP檔案用 UltraEdit 之類的純文字編輯器打開時,則你看到的值會是 0x3412,這是 Intel 制定的儲存方式,把值小的位元組(0x34)存在前面;詳情可參考 Big Endian 和 Little Endian 架構的說明

 ShiftNameSize
(bytes)
Content
Bitmap
File
Header
0000hIdentifier (ID)2'BM'【註1】
0002hFile Size4整個點陣圖檔案的大小(單位:byte)
0006hReserved4保留欄位
000AhBitmap Data Offset4點陣圖資料開始之前的偏移量(單位:byte)
Bitmap
Info
Header
000EhBitmap Header Size4Bitmap Info Header 的長度【註2】
0012hWidth4點陣圖的寬度,以像素(pixel)為單位
0016hHeight4點陣圖的高度,以像素(pixel)為單位【註3】
 
001AhPlanes2點陣圖的位元圖層數【註4】
001ChBits Per Pixel2每個像素的位元數
1:單色點陣圖(使用 2 色調色盤)
4:4 位元點陣圖(使用 16 色調色盤)
8:8 位元點陣圖(使用 256 色調色盤)
16:16 位元高彩點陣圖(不一定使用調色盤)
24:24 位元全彩點陣圖(不使用調色盤)
32:32 位元全彩點陣圖(不一定使用調色盤)
【註5】
 
001EhCompression4壓縮方式【註6】
0:未壓縮
1:RLE 8-bit/pixel
2:RLE 4-bit/pixel
3:Bitfields
 
0022hBitmap Data Size4點陣圖資料的大小(單位:byte)【註7】
0026hH-Resolution4水平解析度(單位:像素/公尺)【註8】
002AhV-Resolution4垂直解析度(單位:像素/公尺)
002EhUsed Colors4點陣圖使用的調色盤顏色數【註9】
0032hImportant Colors4重要的顏色數【註10】
Palette0036hPaletteN*4調色盤資料。
每個索引值指定一種顏色:0x00RRGGBB
其中最高位元組保留為零
Bitmap
Array
-Bitmap Data-點陣圖資料【註11】

【註1】此欄原本有多種識別碼,用來識別點陣圖的類型:
    '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
    不過既然 OS/2 並不普及,目前皆在 Windows 上作業,因此 ID 全都是 'BM'。
 

【註2】此欄原本有多種數值,依作業系統種類而定:
    28h - Windows 3.1x, 95, NT, ...
    0Ch - OS/2 1.x
    F0h - OS/2 2.x
    以目前 Windows 常用的點陣圖來說,此欄位數值通常是 28h。
    但因為微軟已經制定出了新的點陣圖格式,其中的 Bitmap Info Header 結構變化較大,長度加長,所以最好不要直接使用常數 28h,而是應該從實際檔案中讀取這個數值,才能確保程式相容性。

【註3】高度可能為負值,負值表示掃瞄方向由上而下。
    但若高度是負值時,此點陣圖將不能被壓縮!(也就是說 Compression 欄位總是為 0)

【註4】未知的功能...永遠被設為 1

【註5】16 及 32 位元點陣圖是否使用調色盤必須由 Compression 欄位的數值決定
    請參考 Bitfields 的解說。

【註6】點陣圖壓縮方式有以下四種:BI_RGBBI_RLE8BI_RLE4,以及BI_BITFIELDS

相簿設定
標籤設定
相簿狀態