Langsung ke konten utama

Format File

Apa Itu BMP? Penjelasan Format Bitmap

BMP adalah format bitmap Windows yang tidak terkompresi dan lossless. Kami menjelaskan struktur header, kedalaman warna, batasan, dan cara memperkecil file-nya.

Penulis: Hemen Dönüştür Editör EkibiDiterbitkan: 7 menit baca

Gambar sampul panduan format file BMP

BMP adalah salah satu format gambar tertua dan paling sederhana di dunia Windows. File BMP biasanya menulis piksel ke disk baris demi baris tanpa kompresi sama sekali. Kesederhanaan itu membuatnya mudah dibaca dan lossless, tetapi kesederhanaan yang sama juga membuat file-nya sangat besar. Artikel ini membahas asal-usul BMP, isi file-nya, detail kedalaman warna dan transparansi, di mana Anda masih menjumpainya saat ini, serta cara mengonversi file BMP ke format yang lebih praktis.

Apa itu BMP?

BMP (bitmap, ekstensi .bmp) adalah format file gambar raster berbasis piksel. Dokumentasi teknis juga menyebutnya DIB, device-independent bitmap. "Device-independent" berarti gambar bisa ditafsirkan dengan cara yang sama terlepas dari kartu grafis atau printer tempat gambar itu dibuat: file membawa informasi yang dibutuhkan untuk menerjemahkan warnanya di header dan tabel warnanya sendiri.

Menurut dokumentasi Win32 dari Microsoft, file bitmap diawali struktur BITMAPFILEHEADER, diikuti BITMAPINFOHEADER, BITMAPV4HEADER, atau BITMAPV5HEADER, lalu tabel warna opsional, dan terakhir data piksel. MIME type-nya adalah image/bmp.

Sejarah singkat: dari Windows dan OS/2 hingga sekarang

BMP lahir dari kerja sama Microsoft dan IBM untuk Windows dan OS/2 pada akhir 1980-an. Bitmap di era Windows 1.0 sangat bergantung pada perangkat keluaran; bentuk yang independen dari perangkat mulai meluas bersama Windows 3.0 pada 1990. BITMAPCOREHEADER berukuran 12 byte yang didefinisikan untuk OS/2 Presentation Manager adalah alasan orang masih menyebut file "BMP OS/2".

Selama bertahun-tahun, format ini diperluas dengan menambahkan field di akhir header. Menurut deskripsi format dari Library of Congress, versi 5 hadir bersama Windows 98 pada 1998 dan memungkinkan profil warna ICC dicatat di dalam file. Ukuran header yang umum saat ini adalah:

HeaderUkuranTambahan utama
BITMAPCOREHEADER12 byteStruktur dasar yang kompatibel dengan OS/2 1.x
BITMAPINFOHEADER40 byteHeader paling umum, sejak Windows 3.0; field kompresi dan resolusi
BITMAPV4HEADER108 byteMask warna, mask alfa, dan informasi ruang warna
BITMAPV5HEADER124 byteProfil ICC tersemat atau tertaut, rendering intent

Pembaca mendeteksi header mana yang dipakai dari nilai ukuran di field pertamanya. Dengan begitu, perangkat lunak lama bisa mengabaikan field yang lebih baru dan tetap membaca bagian dasarnya.

Isi file BMP

Header file dan tanda tangan "BM"

Setiap file BMP diawali header file 14 byte, dan dua byte pertamanya adalah karakter ASCII BM (heksadesimal 42 4D). Header ini menyimpan ukuran total file dan offset byte tempat data piksel dimulai. DIB yang ditaruh di clipboard Windows (format CF_DIB) tidak menyertakan 14 byte ini dan langsung diawali header info.

Header info

Header info menyimpan lebar, tinggi, bit per piksel (biBitCount), jenis kompresi, resolusi horizontal dan vertikal (dalam piksel per meter), dan jumlah warna yang dipakai di tabel warna.

Tabel warna (palet)

Pada gambar dengan 8 bit per piksel atau kurang, sebuah piksel bukanlah warna, melainkan indeks ke tabel warna. Dalam contoh yang didokumentasikan Microsoft, bitmap 32x32 dengan 16 warna memiliki larik piksel sebesar 32 x 32 x 4 = 4096 bit, karena 4 bit sudah cukup untuk menunjuk 16 warna.

Data piksel: baris dari bawah ke atas dan penjajaran 4 byte

BMP punya dua sifat yang tidak biasa. Pertama, jika tingginya positif, baris disimpan dari bawah ke atas: baris pertama di file adalah baris paling bawah gambar. Tinggi negatif menyimpan baris dari atas ke bawah, tetapi gambar seperti itu tidak bisa dikompresi. Kedua, setiap baris diberi padding hingga kelipatan 4 byte. Microsoft memberikan rumus panjang baris (stride) sebagai berikut:

stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride

Untuk gambar 1920x1080 dengan 24 bit, setiap baris berukuran 1920 x 3 = 5.760 byte (sudah kelipatan 4), sehingga data pikselnya 5.760 x 1.080 = 6.220.800 byte. Dengan header 54 byte, file-nya sekitar 6,2 MB. Gambar yang sama sebagai JPG biasanya hanya sebagian kecil dari ukuran itu.

Kedalaman warna, kompresi, dan transparansi

Dokumentasi BITMAPV5HEADER mendefinisikan 1, 4, 8, 16, 24, dan 32 bit per piksel (nilai 0 berarti kedalaman ditentukan oleh data JPEG atau PNG yang tersemat). 1 bit berarti hitam putih, 4 bit berarti 16 warna, dan 8 bit berarti palet 256 warna. Pada 24 bit, setiap piksel terdiri atas tiga byte dengan urutan biru, hijau, merah.

Field kompresi bisa bernilai sebagai berikut:

  • BI_RGB: Tanpa kompresi. Dalam praktiknya, sebagian besar file BMP.
  • BI_RLE8 dan BI_RLE4: Run-length encoding sederhana untuk gambar palet 8-bit dan 4-bit. Berguna untuk area datar yang luas, hampir tidak berguna untuk foto.
  • BI_BITFIELDS: Bukan kompresi; mask menentukan letak bit merah, hijau, dan biru dalam piksel 16-bit dan 32-bit (misalnya RGB 565).
  • BI_JPEG dan BI_PNG: Mengizinkan data JPEG atau PNG di dalam bitmap. Jarang didukung penampil umum.

Transparansi adalah area BMP yang paling tidak konsisten. Mask alfa di header V4 dan V5 bisa mendefinisikan byte keempat piksel 32-bit sebagai opasitas, tetapi pada BMP 32-bit klasik byte itu dideskripsikan sebagai tidak terpakai dan banyak program mengabaikannya. Jadi, BMP 32-bit yang tampak transparan di satu program dan berlatar hitam di program lain bukanlah hal yang aneh. Jika Anda membutuhkan transparansi, PNG adalah pilihan yang jauh lebih aman.

Dukungan di sistem, browser, dan perangkat lunak

BMP bisa dibuka hampir di mana saja. Penampil bawaan Windows dan Paint, Preview di macOS, dan penampil umum di Linux semuanya bisa membacanya. Panduan format gambar MDN mencantumkan dukungan BMP di semua versi Chrome, Edge, Firefox, Opera, dan Safari. Panduan yang sama juga menegaskan bahwa file BMP tanpa kompresi sangat besar dibandingkan PNG atau JPG dan umumnya sebaiknya dihindari untuk konten situs web.

Di mana BMP digunakan saat ini?

  • Sumber daya aplikasi Windows dan perangkat lunak lama: Gambar toolbar, grafik wizard instalasi, dan sebagian aset game masih berupa BMP.
  • Sistem tertanam dan mikrokontroler: Perangkat berlayar tidak memerlukan decoder JPEG; data piksel bisa langsung disalin ke layar.
  • Kamera industri, pemindai, dan alat uji: Saat dibutuhkan keluaran mentah yang lossless, BMP adalah format perantara yang sederhana.
  • Pengajaran: Dengan header yang hanya beberapa puluh byte, BMP sering menjadi format pertama yang dibaca dan ditulis mahasiswa dalam mata kuliah pengolahan citra.

Kelebihan dan kekurangan

KelebihanKekurangan
Lossless; nilai piksel tidak pernah berubahTanpa kompresi, sehingga file sangat besar
Sangat mudah dibaca dan ditulis, tanpa beban CPUDukungan transparansi tidak konsisten
Bisa dibuka di hampir semua sistem operasi dan browserDukungan metadata lemah (EXIF, deskripsi)
Mode palet cocok untuk perangkat bersumber daya rendahTidak praktis untuk web, email, dan formulir unggah

Masalah umum dan cara mengatasinya

File terlalu besar untuk email atau formulir unggah

Ini masalah yang paling umum. Untuk foto dan hasil pindaian, mengonversi BMP ke JPG biasanya memangkas ukuran hingga sepersepuluhnya atau lebih. Untuk tangkapan layar, diagram, atau apa pun yang berisi teks, mengonversi BMP ke PNG lebih baik: PNG juga lossless tetapi terkompresi, dan tidak menambahkan noise yang ditimbulkan JPG di sekitar tepi yang tajam.

BMP 32-bit menampilkan latar hitam

Program tidak mengenali atau salah membaca byte alfa. Mengonversi ke PNG biasanya menyelesaikannya. Saat mengonversi ke JPG, yang tidak memiliki transparansi, area transparan diisi putih atau warna pilihan Anda.

Gambar terbalik atau miring

Pada pembaca yang Anda tulis sendiri, hal ini biasanya berasal dari dua kesalahan: mengabaikan bahwa baris disimpan dari bawah ke atas, atau tidak melewati byte padding di akhir setiap baris. Memakai rumus stride di atas dan memeriksa tanda tinggi gambar mencegah keduanya.

Program menolak membuka BMP

File BMP dengan kompresi RLE, BI_BITFIELDS, atau data JPEG/PNG tersemat tidak didukung sebagian pembaca sederhana. Menyimpan ulang sebagai BMP 24-bit tanpa kompresi atau mengonversi ke PNG menghilangkan masalah kompatibilitas ini.

Tips konversi

  • JPG untuk foto, PNG untuk grafik: Aturan umum ini berlaku saat meninggalkan BMP. Untuk web, Anda juga bisa memilih WebP atau AVIF di konverter gambar.
  • Pertahankan kualitas tinggi: Karena BMP lossless, kualitas JPG 85-90% memberi hasil yang sulit dibedakan dari aslinya.
  • Perkecil bila perlu: Jika file masih besar, kurangi dimensi pikselnya atau gunakan kompres gambar untuk mencapai ukuran target.
  • Untuk arah sebaliknya: Jika perangkat tertanam atau program lama membutuhkan BMP, pilih BMP sebagai tujuan di konverter gambar. Alat kami menulis BMP 24-bit standar tanpa kompresi; area transparan diratakan ke warna latar yang Anda pilih.

Halaman konversi BMP kami berjalan di browser Anda: file tidak diunggah dan tidak pernah meninggalkan perangkat Anda.

Pertanyaan yang Sering Diajukan

Apakah BMP dan DIB sama?

Dalam praktiknya, ya. DIB adalah struktur bitmap yang independen dari perangkat yang dipakai Windows di memori dan clipboard; file BMP adalah struktur itu dengan header file 14 byte di depannya.

Apakah BMP lossless?

Ya. File BMP tanpa kompresi dan yang dikompresi RLE mempertahankan nilai piksel secara persis. Satu-satunya pengecualian adalah BMP langka yang berisi data JPEG tersemat.

Apakah mengonversi BMP ke PNG menurunkan kualitas?

Tidak. PNG juga lossless; gambarnya tetap identik dan hanya menjadi lebih kecil karena dikompresi.

Bisakah BMP dipakai di situs web?

Browser bisa menampilkan BMP, tetapi file-nya besar tanpa perlu dan memperlambat halaman. Gunakan JPG, PNG, WebP, atau AVIF untuk web.

Apakah BMP mendukung transparansi?

BMP 32-bit secara teori bisa membawa kanal alfa, tetapi dukungan perangkat lunaknya tidak konsisten. PNG adalah pilihan yang lebih aman setiap kali Anda membutuhkan transparansi.

Sumber

Konverter terkait

Semua artikel