Format BMP — Struktur dan Kegunaan File Bitmap Windows
Struktur file BMP, format bitmap bawaan Windows (file header, info header, tabel warna, larik piksel), alasan ukurannya besar karena nyaris tanpa kompresi, penyimpanan dari bawah ke atas dan aturan padding baris, serta kapan BMP masih dibutuhkan.
BMP adalah format untuk menyimpan bitmap independen perangkat (DIB) yang dipakai di Microsoft Windows dan OS/2 sebagai file. BMP bukan spesifikasi yang ditetapkan badan standar internasional; dokumentasi pengembang Microsoft-lah yang secara de facto berperan sebagai spesifikasinya. Ciri utamanya adalah strukturnya yang sederhana sehingga program apa pun mudah membaca dan menulisnya.
Struktur file
Menurut dokumen “Bitmap Storage” di Microsoft Learn, file BMP tersusun dengan urutan berikut.
| Urutan | Komponen | Isi |
|---|---|---|
| 1 | BITMAPFILEHEADER | Pengenal file (BM), ukuran file, posisi awal data piksel |
| 2 | BITMAPINFOHEADER (atau header V4·V5) | Lebar·tinggi piksel, bit per piksel, metode kompresi, resolusi |
| 3 | Tabel warna (larik RGBQUAD) | Dipakai pada gambar 1·4·8 bit yang memakai palet |
| 4 | Larik piksel | Data gambar sebenarnya |
Dua byte pertama file adalah ASCII BM (heksadesimal 42 4D), jadi file yang ekstensinya berubah pun bisa dipastikan sebagai BMP dari tanda tangan ini. Info header juga punya kolom untuk resolusi cetak (piksel per meter).
Disimpan dari bawah ke atas
BMP pada umumnya menyimpan piksel mulai dari baris paling bawah ke atas (bottom-up). Jika nilai tinggi di header negatif, berarti disimpan dari atas ke bawah (top-down). Selain itu, di akhir setiap baris ditambahkan byte pengisi agar jumlah byte-nya kelipatan 4. Bagian inilah yang sering salah saat membuat program pembaca BMP sendiri.
Contoh menghitung ukuran baris
Setiap baris BMP harus diratakan per 4 byte. Jika gambar 24 bit lebarnya 101 piksel, data nyata satu baris adalah 101 × 3 = 303 byte, lalu ditambah 1 byte pengisi agar menjadi kelipatan 4 sehingga tersimpan 304 byte. Jadi ukuran total data piksel adalah (byte per baris) × tinggi piksel, dan ditambah header (biasanya 54 byte) menjadi ukuran file. Karena aturan ini, kesalahan berupa tiap baris tampak bergeser sering muncul saat menangani langsung gambar yang lebarnya bukan kelipatan 4.
Mengapa ukurannya besar
BMP umumnya menyimpan piksel mentah tanpa kompresi. BMP 24 bit memakai 3 byte per piksel, sehingga gambar 1920×1080 sekitar 6.2MB dan foto ponsel 4032×3024 sekitar 36.6MB. Untuk gambar berpalet 8 bit ke bawah bisa dipilih kompresi RLE (run-length encoding), tetapi hampir tidak berpengaruh pada foto. MDN juga menyarankan agar BMP dihindari untuk konten web karena ukurannya.
Transparansi
BMP 24 bit tradisional tidak punya kanal alfa. BMP 32 bit yang memakai header V4·V5 bisa mendefinisikan alpha mask, tetapi banyak program tidak menafsirkannya sebagai transparansi dengan benar, jadi untuk bertukar gambar transparan PNG lebih aman.
Kapan BMP masih dipakai
- Ketika peralatan industri lama, perangkat embedded, printer struk, atau sebagian program internal perusahaan hanya menerima BMP
- Program sederhana atau contoh pembelajaran yang perlu menangani piksel apa adanya tanpa proses kompresi·dekompresi
- Cara penyimpanan gambar kecil di dalam ikon Windows (ICO)
Hal yang perlu diperhatikan saat konversi
- BMP → PNG: lossless dan ukurannya turun drastis. Konversi terbaik untuk arsip dan berbagi.
- BMP → JPG: untuk foto, ukurannya bisa menyusut hingga puluhan kali lipat, tetapi memakai kompresi lossy.
- Format lain → BMP: periksa jumlah bit yang diminta perangkat (24 bit atau 8 bit). Area transparan diisi warna latar. Anda bisa menyimpan sebagai BMP dengan alat konversi format gambar.
Coba sekarang