BMP(Bitmap)是 Windows 系統原生位圖格式,雖然壓縮率低、檔案大,但相容性極佳、結構簡單,至今仍是開發教學、系統圖示、無損中繼存檔的常用格式。本文詳細拆解 BMP 結構四大區塊、DDB/DIB 差異、色深選項、掃描順序與實際開啟工具。
BMP 核心特性一覽
| 屬性 | 說明 |
| 全稱 | Bitmap Image File |
| 副檔名 | .bmp、.dib |
| 壓縮方式 | 預設無壓縮(RLE 可選,極少用) |
| 色深支援 | 1-bit (單色)、4-bit (16色)、8-bit (256色)、16-bit、24-bit (真彩)、32-bit (含 Alpha) |
| 掃描順序 | 左→右、下→上(原點在左下角,與螢幕座標相反) |
| 透明度支援 | 32-bit 含 Alpha 通道;其他色深無原生透明 |
| 最大尺寸 | 理論 32,767 × 32,767 像素(受檔案頭 32-bit 有號整數限制) |
兩大子類:DDB vs DIB
- DDB (Device-Dependent Bitmap):依賴特定顯示裝置(螢幕/印表機)的色彩格式,僅存在於記憶體中,不直接存檔,GDI 繪圖常用
- DIB (Device-Independent Bitmap):攜帶完整色彩資訊(調色盤/色彩空間),可跨裝置交換、存檔,標準 .bmp 檔案即為 DIB
標準 BMP 檔案四大區塊結構
+--------------------------+
| 1. Bitmap File Header | 14 bytes ← 檔案類型 'BM'、檔案大小、資料偏移量
+--------------------------+
| 2. Bitmap Info Header | 40 bytes (BITMAPINFOHEADER) / 108/124 bytes (V4/V5)
| - 寬、高、色深、壓縮 | ← 寬度、高度、平面數、位元數、壓縮方法、影像大小
| - 解析度、色彩數 | ← 水平/垂直解析度、調色盤顏色數、重要顏色數
+--------------------------+
| 3. Color Palette (可選) | 4 bytes × 調色盤項目數 (1/4/8-bit 需要;24/32-bit 不需要)
| - RGBQUAD 陣列 | ← 藍、綠、紅、保留
+--------------------------+
| 4. Pixel Data | 依色深編碼:24-bit 直接 RGB;≤8-bit 存調色盤索引
| - 掃描列 4-byte 對齊 | ← 每列補齊至 4 的倍數 (行跨度 Stride)
+--------------------------+
色深與調色盤關係
| 色深 | 調色盤 | 像素資料 | 典型用途 |
| 1-bit | 2 色 (黑/白) | 1 bit/index | 傳真、單色圖示 |
| 4-bit | 16 色 | 4 bits/index | 舊版 Windows 圖示 |
| 8-bit | 256 色 | 1 byte/index | GIF 風格、舊遊戲素材 |
| 24-bit | 無 | 3 bytes (BGR 順序) | 真彩圖片、截圖、中繼存檔 |
| 32-bit | 無 | 4 bytes (BGRA) | 含透明通道素材、遊戲貼圖 |
如何開啟 BMP 檔案?
Windows 內建支援極完整,無需額外軟體:
- 🖼️ 照片檢視器 / 照片 App(雙擊直接開啟)
- 🎨 畫圖(編輯、另存其他格式)
- 🌐 瀏覽器(拖曳至 Chrome/Edge/Firefox)
- 💻 IDE/編輯器(VS Code 裝 Image Preview 擴充、Notepad++ 外掛)
- 🛠️ 專業圖片軟體:Photoshop、GIMP、IrfanView、XnView、FastStone
優缺點總結
| 優點 | 缺點 |
| ✅ 無損、無壓縮伪影 | ❌ 檔案極大(24-bit 1920×1080 ≈ 6 MB) |
| ✅ 結構簡單,開發易解析/生成 | ❌ 不支援多幀/動畫 |
| ✅ Windows 系統級原生相容 | ❌ 不支援 EXIF/XMP 元數據 |
| ✅ 適合中繼無損存檔、像素級處理 | ❌ 網路傳輸/網頁嵌入極不划算 |
💡 現代工作流建議:中繼處理用 BMP/PNG/TIFF;最終發布用 WebP/AVIF/JPEG XL;系統圖示用 ICO/ICNS;跨平台無損歸檔用 PNG/FLIF。