BMP (Bitmap, 1990)(ビーエムピー)
Microsoft が 1990 年に Windows 3.0 で標準化した非圧縮ビットマップ画像フォーマット。シンプルな構造 (ヘッダ + ピクセル配列) で実装容易、Windows ペイントの標準保存形式として広く知られるが、ファイルサイズの大きさから現代の Web 用途では PNG/JPEG に置換された。
概要
BMP (Bitmap、ビットマップ) は、Microsoft が 1990 年に Windows 3.0 で標準化した非圧縮ビットマップ画像フォーマットで、シンプルな構造 (ヘッダ + ピクセル配列) によって実装容易性に優れ、Windows ペイント・Windows アイコン (.ico)・カーソル (.cur) の標準保存形式として広く知られています。BITMAPFILEHEADER (14 バイト) + BITMAPINFOHEADER (40 バイト) + ピクセル配列の単純構造で、無圧縮または RLE (Run-Length Encoding) 圧縮対応、24bit RGB・32bit RGBA・1/4/8bit パレットインデックスを表現可能。ただしファイルサイズの大きさ (24bit RGB 1920×1080 で約 6MB) から現代の Web 用途では PNG/JPEG に完全置換されており、Windows 内部での画像処理 (アイコン・カーソル) で利用継続、画像処理アルゴリズム実装の教育素材として現代もコンピュータサイエンス教科書に頻出する基本形式となっています。
主な特徴・仕組み
- 策定: 1990 年 Microsoft、Windows 3.0 (1990) で標準実装
- 構造: BITMAPFILEHEADER (14B) + BITMAPINFOHEADER (40B) + ピクセル配列
- bit 深度: 1/4/8/16/24/32 bit per pixel
- 色空間: RGB・RGBA (アルファチャネルあり)
- 圧縮: 無圧縮 (BI_RGB) または RLE (BI_RLE8/BI_RLE4)
- 行配列: bottom-up (下から上) が一般、ファイル構造の特殊性
- 行パディング: 4 バイト境界アライン必須
- メタデータ: 解像度 (DPI)・色テーブル (パレット画像時)
- ファイルサイズ: 24bit RGB 1920×1080 で約 6MB、4K で 24MB
- 互換性: Windows 主体、macOS/Linux の対応は限定的
スペック比較表
| フォーマット | 年 | 圧縮 | ファイルサイズ (1920×1080) | 用途 |
|---|---|---|---|---|
| BMP | 1990 | 無圧縮/RLE | 6MB | Windows 内部 |
| TIFF | 1986 | LZW/JPEG 等 | 0.5-6MB | 印刷 |
| GIF | 1987 | LZW | 0.3-2MB | アニメ・線画 |
| JPEG | 1992 | DCT 非可逆 | 0.2-0.5MB | 写真 |
| PNG | 1996 | Deflate 可逆 | 0.5-2MB | Web |
具体例・対応技術
- Windows ペイント (1985-): 標準保存形式、現代 Windows でも対応継続
- Windows アイコン (.ico): BMP ベース、内部的に BMP データ
- Windows カーソル (.cur): BMP ベース、マウスカーソルファイル
- 古い Windows ゲーム (1990s): スプライト画像が BMP 保存
- 画像処理教科書: アルゴリズム実装の入門素材として頻出
自作PCでの選び方・注意点
BMP は 2026 年現在、Web 配信・配布・SNS 用途では完全に時代遅れで、PNG/WebP/AVIF への変換が推奨されます。ただし以下の場面で BMP の知識が必要: (1) Windows アイコン・カーソル作成 (Visual Studio・GIMP)・(2) 古い Windows ゲームの MOD 開発・(3) 画像処理アルゴリズムの教育・実装 (C/C++ で BMP 直接読込で OpenCV 不要の課題)・(4) ハードウェア組み込み開発 (LCD ドライバの直接ピクセル書込)。BMP→PNG 変換は ImageMagick (magick input.bmp output.png) で簡単・自動、Web 配信向けには 24bit BMP を 8bit PNG (パレット化) で更に小型化可能。Pillow (Python) で Image.open('file.bmp').save('out.png') も同様。RAW 写真からの BMP 出力は意味ないため、写真は JPEG・線画は PNG が現代の選択肢。
関連用語との違い
- TIFF: タグ構造で柔軟、業務用、BMP より高機能
- GIF: LZW 圧縮、アニメ対応、BMP より遥かに軽量
- PNG: 可逆圧縮、現代の BMP 代替
よくある質問(FAQ)
Q1: BMP は現代でも使う? A: Web/配布用途では非推奨、PNG/WebP に変換すべき。Windows アイコン・古いソフト互換性・画像処理教育などの限定的場面で残存。
Q2: BMP と PNG どちらが軽い? A: 一般的に PNG が圧倒的に軽い (24bit RGB 1920×1080 で BMP 6MB vs PNG 0.5-2MB)。PNG の Deflate 圧縮が効くため。
Q3: BMP の行構造の特殊性とは? A: 行配列が bottom-up (画面下から上) で格納される、他フォーマット (top-down) と異なる。OpenCV・Pillow 等のライブラリで自動補正されるが、生実装では注意必要。
まとめ
- BMP = 1990 年 Microsoft 策定、Windows 標準ビットマップ
- BITMAPFILEHEADER + BITMAPINFOHEADER + ピクセル配列のシンプル構造
- ファイルサイズ大、Web/配布用途は PNG/JPEG に置換済み
- Windows アイコン・古いソフト互換・教育用途で残存