BMP file format

Format file BMP atau bitmap, adalah format file gambar grafik raster yang digunakan untuk menyimpan gambar digital bitmap, terlepas dari perangkat tampilan (seperti adaptor grafik), terutama pada sistem operasi Microsoft Windows dan OS/2.

Format file BMP mampu menyimpan gambar digital dua dimensi baik monokrom maupun warna, dalam berbagai kedalaman warna, dan opsional dengan kompresi data, saluran alfa, dan profil warna. Spesifikasi Windows Metafile (WMF) mencakup format file BMP.

Bitmap yang tidak tergantung perangkat dan format file BMP

Microsoft telah menetapkan representasi tertentu dari bitmap warna dengan kedalaman warna yang berbeda, sebagai bantuan untuk bertukar bitmap antara perangkat dan aplikasi dengan berbagai representasi internal. Mereka menyebut bitmap atau DIB yang tidak tergantung perangkat ini, dan format file untuk mereka disebut format file DIB atau format file gambar BMP.

Menurut dukungan Microsoft:

Bitmap yang tidak bergantung pada perangkat (DIB) adalah format yang digunakan untuk menentukan bitmap yang tidak bergantung pada perangkat dalam berbagai resolusi warna. Tujuan utama DIB adalah untuk memungkinkan bitmap dipindahkan dari satu perangkat ke perangkat lainnya (karenanya, bagian nama yang tidak bergantung pada perangkat). DIB adalah format eksternal, berbeda dengan bitmap yang bergantung pada perangkat, yang muncul di sistem sebagai objek bitmap (dibuat oleh aplikasi…). DIB biasanya dipindahkan dalam metafile (biasanya menggunakan fungsi StretchDIBits()), file BMP, dan Clipboard (format data CF_DIB).

Bagian berikut membahas data yang disimpan dalam file BMP atau DIB secara rinci. Ini adalah format file BMP standar. Beberapa aplikasi membuat file gambar bitmap yang tidak sesuai dengan dokumentasi Microsoft. Juga, tidak semua bidang digunakan; nilai 0 akan ditemukan di bidang yang tidak digunakan ini.

Struktur berkas

File gambar bitmap terdiri dari struktur berukuran tetap (header) serta struktur berukuran variabel yang muncul dalam urutan yang telah ditentukan. Banyak versi berbeda dari beberapa struktur ini dapat muncul di file, karena evolusi panjang dari format file ini.

Mengacu pada diagram 1, file bitmap tersusun dari struktur dengan urutan sebagai berikut:

Nama struktur Opsional Ukuran Tujuan Komentar
Header file bitmap No 14 byte Untuk menyimpan informasi umum tentang file gambar bitmap Tidak diperlukan setelah file dimuat di memori
Tajuk DIB Tidak ada Ukuran tetap
(Ada 7 versi berbeda) Untuk menyimpan informasi detail tentang gambar bitmap dan menentukan format piksel Langsung mengikuti header file Bitmap
Masker bit ekstra Ya 3 atau 4 DWORD
(12 atau 16 byte) Untuk menentukan format piksel Tampilkan hanya jika header DIB adalah BITMAPINFOHEADER dan anggota Metode Kompresi disetel ke BI_BITFIELDS atau BI_ALPHABITFIELDS
Tabel warna Semi-opsional Ukuran variabel Untuk menentukan warna yang digunakan oleh data gambar bitmap (larik Pixel) Wajib untuk kedalaman warna ≤ 8 bit
Gap1 Ya Ukuran variabel Perataan struktur Sebuah artefak dari File offset ke array Pixel di header file Bitmap
Susunan piksel Tidak ada Ukuran variabel Untuk menentukan nilai sebenarnya dari piksel Format piksel ditentukan oleh header DIB atau Masker bit ekstra. Setiap baris dalam array Pixel diisi dengan ukuran kelipatan 4 byte
Celah2 Ya Ukuran variabel Perataan struktur Artefak bidang offset data profil ICC di header DIB
Profil warna ICC Ya Ukuran variabel Untuk menentukan profil warna untuk manajemen warna Bisa juga berisi jalur ke file eksternal yang berisi profil warna. Saat dimuat di memori sebagai “DIB non-packed”, itu terletak di antara tabel warna dan Gap1.

DIB dalam memori

File gambar bitmap yang dimuat ke dalam memori menjadi struktur data DIB – komponen penting dari Windows GDI API. Struktur data DIB dalam memori hampir sama dengan format file BMP, tetapi tidak berisi header file bitmap 14-byte dan dimulai dengan header DIB. Untuk DIB yang dimuat dalam memori, tabel warna juga dapat terdiri dari entri 16-bit yang merupakan indeks ke palet yang saat ini direalisasikan (tingkat tipuan tambahan), alih-alih definisi warna RGB yang eksplisit. Dalam semua kasus, larik piksel harus dimulai pada alamat memori yang merupakan kelipatan 4 byte. Dalam DIB non-kemasan yang dimuat di memori, data profil warna opsional harus ditempatkan tepat setelah tabel warna dan sebelum gap1 dan larik piksel (tidak seperti di diag. 1).

Ketika ukuran gap1 dan gap2 adalah nol, struktur data DIB dalam memori biasanya disebut sebagai “DIB yang dikemas” dan dapat disebut dengan penunjuk tunggal yang menunjuk ke awal header DIB. Dalam semua kasus, larik piksel harus dimulai pada alamat memori yang merupakan kelipatan 4 byte. Dalam beberapa kasus, mungkin perlu untuk menyesuaikan jumlah entri dalam tabel warna untuk memaksa alamat memori larik piksel menjadi kelipatan 4 byte. Untuk “packed DIBs” yang dimuat dalam memori, data profil warna opsional harus segera ikuti larik piksel, seperti yang digambarkan dalam diag. 1 (dengan gap1=0 dan gap2=0).
“Packed DIB” diperlukan oleh fungsi API papan klip Windows serta oleh beberapa fungsi kuas dan sumber daya berpola Windows.

Tajuk file bitmap

Blok byte ini berada di awal file dan digunakan untuk mengidentifikasi file. Aplikasi tipikal membaca blok ini terlebih dahulu untuk memastikan bahwa file tersebut sebenarnya adalah file BMP dan tidak rusak. 2 byte pertama dari format file BMP adalah karakter “B” lalu karakter “M” dalam enkode ASCII . Semua nilai bilangan bulat disimpan dalam format little-endian (yaitu byte paling tidak signifikan terlebih dahulu).

Offset hexOffset decSizePurpose
0002 bytesThe header field used to identify the BMP and DIB file is 0x42 0x4D in hexadecimal, same as BM in ASCII. The following entries are possible:

BM
Windows 3.1x, 95, NT, … etc.
BA
OS/2 struct bitmap array
CI
OS/2 struct color icon
CP
OS/2 const color pointer
IC
OS/2 struct icon
PT
OS/2 pointer
0224 bytesThe size of the BMP file in bytes
0662 bytesReserved; actual value depends on the application that creates the image, if created manually can be 0
0882 bytesReserved; actual value depends on the application that creates the image, if created manually can be 0
0A104 bytesThe offset, i.e. starting address, of the byte where the bitmap image data (pixel array) can be found.

DIB header (header informasi bitmap

Blok byte ini memberi tahu aplikasi informasi terperinci tentang gambar, yang akan digunakan untuk menampilkan gambar di layar. Blok juga cocok dengan header yang digunakan secara internal oleh Windows dan OS/2 dan memiliki beberapa varian berbeda. Semuanya berisi bidang dword (32-bit), yang menentukan ukurannya, sehingga aplikasi dapat dengan mudah menentukan tajuk mana yang digunakan dalam gambar. Alasan adanya header yang berbeda adalah karena Microsoft memperpanjang format DIB beberapa kali. Header baru yang diperluas dapat digunakan dengan beberapa fungsi GDI daripada yang lama, menyediakan lebih banyak fungsi. Karena GDI mendukung fungsi untuk memuat file bitmap, aplikasi Windows biasa menggunakan fungsi tersebut. Salah satu akibatnya adalah untuk aplikasi semacam itu, format BMP yang mereka dukung cocok dengan format yang didukung oleh versi Windows yang sedang dijalankan. Lihat tabel di bawah ini untuk informasi lebih lanjut.

Windows and OS/2 bitmap headers
SizeHeader nameOS supportFeaturesWritten by
12BITMAPCOREHEADER
OS21XBITMAPHEADER
Windows 2.0 or later
OS/2 1.x
64OS22XBITMAPHEADEROS/2 BITMAPCOREHEADER2Adds halftoning. Adds RLE and Huffman 1D compression.
16OS22XBITMAPHEADERThis variant of the previous header contains only the first 16 bytes and the remaining bytes are assumed to be zero values.An example of such a case is the graphic pal8os2v2-16.bmp of the BMP Suite.
40BITMAPINFOHEADERWindows NT, 3.1x or laterExtends bitmap width and height to 4 bytes. Adds 16 bpp and 32 bpp formats. Adds RLE compression.
52BITMAPV2INFOHEADERUndocumentedAdds RGB bit masks.Adobe Photoshop
56BITMAPV3INFOHEADERNot officially documented, but this documentation was posted on Adobe’s forums, by an employee of Adobe with a statement that the standard was at one point in the past included in official MS documentationAdds alpha channel bit mask.Adobe Photoshop
108BITMAPV4HEADERWindows NT 4.0, 95 or laterAdds color space type and gamma correction
124BITMAPV5HEADERWindows NT 5.0, 98 or laterAdds ICC color profilesThe GIMP

 

Offset (hex)Offset (dec)Size (bytes)OS/2 1.x BITMAPCOREHEADER
0E144The size of this header (12 bytes)
12182The bitmap width in pixels (unsigned 16-bit)
14202The bitmap height in pixels (unsigned 16-bit)
16222The number of color planes, must be 1
18242The number of bits per pixel
OS/2 1.x bitmaps are uncompressed and cannot be 16 or 32 bpp.

 

Windows 2.x BITMAPCOREHEADER berbeda dari OS/2 1.x BITMAPCOREHEADER (ditunjukkan pada tabel di atas) dalam satu detail bahwa bidang lebar dan tinggi gambar adalah bilangan bulat bertanda, bukan tidak bertanda.

Versi setelah BITMAPINFOHEADER hanya menambahkan kolom di akhir header versi sebelumnya. Misalnya: BITMAPV2INFOHEADER menambahkan kolom ke BITMAPINFOHEADER, dan BITMAPV3INFOHEADER menambahkan kolom ke BITMAPV2INFOHEADER.

Saluran alfa terintegrasi telah diperkenalkan dengan BITMAPV3INFOHEADER tidak berdokumen dan dengan BITMAPV4HEADER yang terdokumentasikan (sejak Windows 95) dan digunakan dalam sistem logon dan tema Windows XP serta Microsoft Office (sejak v2000); didukung oleh beberapa perangkat lunak pengedit gambar, seperti Adobe Photoshop sejak versi 7 dan Adobe Flash sejak versi MX 2004 (kemudian dikenal sebagai Macromedia Flash). Ini juga didukung oleh GIMP, Google Chrome, Microsoft PowerPoint, dan Microsoft Word.

Untuk alasan kompatibilitas, sebagian besar aplikasi menggunakan header DIB yang lebih lama untuk menyimpan file. Dengan OS/2 tidak lagi didukung setelah Windows 2000, untuk saat ini format Windows yang umum adalah header BITMAPINFOHEADER . Lihat tabel berikutnya untuk penjelasannya. Semua nilai disimpan sebagai unsigned integer, kecuali dinyatakan secara eksplisit.

Offset (hex)Offset (dec)Size (bytes)Windows BITMAPINFOHEADER
0E144the size of this header, in bytes (40)
12184the bitmap width in pixels (signed integer)
16224the bitmap height in pixels (signed integer)
1A262the number of color planes (must be 1)
1C282the number of bits per pixel, which is the color depth of the image. Typical values are 1, 4, 8, 16, 24 and 32.
1E304the compression method being used. See the next table for a list of possible values
22344the image size. This is the size of the raw bitmap data; a dummy 0 can be given for BI_RGB bitmaps.
26384the horizontal resolution of the image. (pixel per metre, signed integer)
2A424the vertical resolution of the image. (pixel per metre, signed integer)
2E464the number of colors in the color palette, or 0 to default to 2n
32504the number of important colors used, or 0 when every color is important; generally ignored

Metode kompresi (offset 30) dapat berupa:

ValueIdentified byCompression methodComments
0BI_RGBnoneMost common
1BI_RLE8RLE 8-bit/pixelCan be used only with 8-bit/pixel bitmaps
2BI_RLE4RLE 4-bit/pixelCan be used only with 4-bit/pixel bitmaps
3BI_BITFIELDSOS22XBITMAPHEADER: Huffman 1DBITMAPV2INFOHEADER: RGB bit field masks,
BITMAPV3INFOHEADER+: RGBA
4BI_JPEGOS22XBITMAPHEADER: RLE-24BITMAPV4INFOHEADER+: JPEG image for printing
5BI_PNGBITMAPV4INFOHEADER+: PNG image for printing]
6BI_ALPHABITFIELDSRGBA bit field masksonly Windows CE 5.0 with .NET 4.0 or later
11BI_CMYKnoneonly Windows Metafile CMYK
12BI_CMYKRLE8RLE-8only Windows Metafile CMYK
13BI_CMYKRLE4RLE-4only Windows Metafile CMYK

OS/2 2.x OS22XBITMAPHEADER (BITMAPINFOHEADER2 dalam dokumentasi IBM) berisi 24 byte tambahan:

Offset (hex)Offset (dec)Size (bytes)OS/2 OS22XBITMAPHEADER (BITMAPINFOHEADER2)
36542An enumerated value specifying the units for the horizontal and vertical resolutions (offsets 38 and 42). The only defined value is 0, meaning pixels per metre
38562Padding. Ignored and should be zero
3A582An enumerated value indicating the direction in which the bits fill the bitmap. The only defined value is 0, meaning the origin is the lower-left corner. Bits fill from left-to-right, then bottom-to-top.Note that Windows bitmaps (which don’t include this field) can also specify an upper-left origin (bits fill from left-to-right, then top-to-bottom) by using a negative value for the image height
3C602An enumerated value indicating a halftoning algorithm that should be used when rendering the image.
40644Halftoning parameter 1 (see below)
44684Halftoning parameter 2 (see below)
48724An enumerated value indicating the color encoding for each entry in the color table. The only defined value is 0, indicating RGB.
4C764An application-defined identifier. Not used for image rendering

The halftoning algorithm (offset 60) can be:

ValueHalftoning algorithmComments
0noneMost common
1Error diffusionHalftoning parameter 1 (offset 64) is the percentage of error damping. 100 indicates no damping. 0 indicates that errors are not diffused
2PANDA: Processing Algorithm for Noncoded Document AcquisitionHalftoning parameters 1 and 2 (offsets 64 and 68, respectively) represent the X and Y dimensions, in pixels, respectively, of the halftoning pattern used
3Super-circleHalftoning parameters 1 and 2 (offsets 64 and 68, respectively) represent the X and Y dimensions, in pixels, respectively, of the halftoning pattern used

Tabel warna

Tabel warna (palet) muncul di file gambar BMP langsung setelah header file BMP, header DIB, dan setelah tiga atau empat bitmask opsional jika header BITMAPINFOHEADER dengan opsi BI_BITFIELDS (12 byte) atau BI_ALPHABITFIELDS (16 byte) digunakan . Oleh karena itu, offsetnya adalah ukuran BITMAPFILEHEADER ditambah ukuran header DIB (ditambah 12-16 byte opsional untuk topeng tiga atau empat bit).
Catatan: Pada Windows CE header BITMAPINFOHEADER dapat digunakan dengan opsi BI_ALPHABITFIELDS] di anggota biCompression.

Jumlah entri dalam palet adalah 2n (di mana n adalah jumlah bit per piksel) atau angka lebih kecil yang ditentukan dalam header (dalam format header OS/2 BITMAPCOREHEADER, hanya palet ukuran penuh yang didukung) Di sebagian besar kasus, setiap entri dalam tabel warna menempati 4 byte, dalam urutan biru, hijau, merah, 0x00 (lihat di bawah untuk pengecualian). Ini diindeks di BITMAPINFOHEADER di biBitCount anggota struktur.

Tabel warna adalah blok byte (tabel) yang mencantumkan warna yang digunakan oleh gambar. Setiap piksel dalam gambar berwarna yang diindeks dijelaskan oleh sejumlah bit (1, 4, atau 8) yang merupakan indeks dari satu warna yang dijelaskan oleh tabel ini. Tujuan palet warna dalam bitmap warna yang diindeks adalah untuk menginformasikan aplikasi tentang warna sebenarnya yang terkait dengan masing-masing nilai indeks ini. Tujuan dari tabel warna dalam bitmap non-diindeks (non-paletisasi) adalah untuk membuat daftar warna yang digunakan oleh bitmap untuk tujuan pengoptimalan pada perangkat dengan kemampuan tampilan warna terbatas dan untuk memfasilitasi konversi di masa mendatang ke berbagai format piksel dan paletisasi.

Warna dalam tabel warna biasanya ditentukan dalam format 4 byte per entri RGBA32 . Tabel warna yang digunakan dengan OS/2 BITMAPCOREHEADER menggunakan format 3-byte per entri RGB24. Untuk DIB yang dimuat dalam memori, tabel warna secara opsional dapat terdiri dari entri 2-byte – entri ini merupakan indeks ke palet yang saat ini direalisasikan bukan eksplisit Definisi warna RGB.

Microsoft tidak melarang keberadaan bit mask saluran alfa yang valid di BITMAPV4HEADER dan BITMAPV5HEADER untuk gambar berwarna yang diindeks 1bpp, 4bpp, dan 8bpp, yang menunjukkan bahwa entri tabel warna juga dapat menentukan komponen alfa menggunakan 8.8.8.[0-8] [0-8] melalui anggota RGBQUAD.rgbReserved. Namun, beberapa versi dokumentasi Microsoft melarang fitur ini dengan menyatakan bahwa anggota RGBQUAD.rgbReserved “harus nol”.

Seperti disebutkan di atas, tabel warna biasanya tidak digunakan saat piksel berada dalam format 16-bit per piksel (16bpp) (dan lebih tinggi); biasanya tidak ada entri tabel warna dalam file gambar bitmap tersebut. Namun, dokumentasi Microsoft (di situs web MSDN per 16 November 2010) menetapkan bahwa untuk 16bpp (dan lebih tinggi), tabel warna dapat ditampilkan untuk menyimpan daftar warna yang dimaksudkan untuk pengoptimalan pada perangkat dengan kemampuan tampilan warna terbatas , sementara itu juga menentukan, bahwa dalam kasus seperti itu, tidak ada entri palet yang diindeks yang ada di Tabel Warna ini. Ini mungkin tampak seperti kontradiksi jika tidak ada perbedaan yang dibuat antara entri palet wajib dan daftar warna opsional.

Penyimpanan piksel

Bit yang mewakili piksel bitmap dikemas dalam baris (juga dikenal sebagai garis langkah atau pindai). Ukuran setiap baris dibulatkan menjadi kelipatan 4 byte (DWORD 32-bit) dengan mengisi

Untuk gambar dengan tinggi di atas 1, beberapa baris berlapis disimpan secara berurutan, membentuk Array Piksel.

Jumlah total byte yang diperlukan untuk menyimpan satu baris piksel dapat dihitung sebagai:

{\displaystyle {\text{RowSize}}=\left\lceil {\frac {{\text{BitsPerPixel}}\cdot {\text{ImageWidth}}}{32}}\right\rceil \cdot 4=\left\lfloor {\frac {{\text{BitsPerPixel}}\cdot {\text{ImageWidth}}+31}{32}}\right\rfloor \cdot 4,}
ImageWidth dinyatakan dalam piksel. Persamaan di atas menggunakan fungsi lantai dan langit-langit.

Jumlah total byte yang diperlukan untuk menyimpan larik piksel dalam gambar n bit per piksel (bpp), dengan 2n warna, dapat dihitung dengan memperhitungkan efek pembulatan ukuran setiap baris ke kelipatan 4 byte, sebagai berikut:

PixelArraySize = Ukuran Baris · |ImageHeight|
ImageHeight dinyatakan dalam piksel. Nilai absolut diperlukan karena ImageHeight dinyatakan sebagai angka negatif untuk gambar dari atas ke bawah.
Array piksel (data bitmap)

Array piksel adalah blok DWORD 32-bit, yang mendeskripsikan piksel gambar demi piksel. Biasanya piksel disimpan “dari bawah ke atas”, mulai dari pojok kiri bawah, dari kiri ke kanan, lalu baris demi baris dari bawah ke atas gambar. Kecuali BITMAPCOREHEADER digunakan, bitmap Windows yang tidak terkompresi juga dapat disimpan dari atas ke bawah, jika nilai Tinggi Gambar negatif.

Di OS/2 DIB asli, hanya empat nilai legal kedalaman warna adalah 1, 4, 8, dan 24 bit per piksel (bpp). Header DIB kontemporer memungkinkan format piksel dengan 1, 2, 4, 8, 16, 24 dan 32 bit per piksel (bpp). GDI+ juga mengizinkan 64 bit per piksel

Padding byte (tidak harus 0) harus ditambahkan ke akhir baris untuk menaikkan panjang baris menjadi lipat empat byte. Saat larik piksel dimuat ke dalam memori, setiap baris harus dimulai dari alamat memori yang merupakan kelipatan 4. Pembatasan alamat/offset ini wajib hanya untuk Array Piksel yang dimuat dalam memori. Untuk tujuan penyimpanan file, hanya ukuran setiap baris yang harus dilipatan 4 byte sedangkan file offset bisa diubah-ubah. Bitmap 24-bit dengan Lebar=1, akan memiliki 3 byte data per baris (biru, hijau, merah) dan 1 byte padding, sedangkan Lebar=2 akan memiliki 6 byte data dan 2 byte padding, Lebar=3 akan memiliki 9 byte data dan 3 byte padding, dan Width=4 akan memiliki 12 byte data dan tanpa padding.

Kompresi
Gambar berwarna terindeks dapat dikompresi dengan 4-bit atau 8-bit RLE atau algoritme Huffman 1D.
Gambar OS/2 BITMAPCOREHEADER2 24bpp dapat dikompresi dengan algoritme RLE 24-bit.
Gambar 16bpp dan 32bpp selalu disimpan tanpa kompresi.
Perhatikan bahwa gambar dalam semua kedalaman warna dapat disimpan tanpa kompresi jika diinginkan.

Format piksel
Format 1-bit per piksel (1bpp) mendukung 2 warna berbeda, (misalnya: hitam dan putih). Nilai piksel disimpan di setiap bit, dengan piksel pertama (paling kiri) di bit paling signifikan dari byte pertama. Setiap bit adalah indeks ke dalam tabel 2 warna. Bit yang tidak disetel akan merujuk ke entri tabel warna pertama, dan bit yang disetel akan merujuk ke entri tabel warna terakhir (kedua).
Format 2-bit per piksel (2bpp) mendukung 4 warna berbeda dan menyimpan 4 piksel per 1 byte, piksel paling kiri berada di dua bit paling signifikan (hanya Windows CE :). Setiap nilai piksel adalah indeks 2-bit ke dalam tabel hingga 4 warna.
Format 4-bit per piksel (4bpp) mendukung 16 warna berbeda dan menyimpan 2 piksel per 1 byte, piksel paling kiri berada di nibble yang lebih signifikan. Setiap nilai piksel adalah indeks 4-bit ke dalam tabel hingga 16 warna.
Format 8-bit per piksel (8bpp) mendukung 256 warna berbeda dan menyimpan 1 piksel per 1 byte. Setiap byte adalah indeks ke dalam tabel hingga 256 warna.
Format 16-bit per piksel (16bpp) mendukung 65536 warna berbeda dan menyimpan 1 piksel per 2-byte WORD. Setiap KATA dapat menentukan sampel alfa, merah, hijau, dan biru dari piksel.
Format 24-bit per piksel (24bpp) mendukung 16.777.216 warna berbeda dan menyimpan 1 nilai piksel per 3 byte. Setiap nilai piksel menentukan sampel piksel merah, hijau, dan biru (8.8.8.0.0 dalam notasi RGBAX). Khususnya, dalam urutan: biru, hijau, dan merah (8 bit per setiap sampel)
Format 32-bit per piksel (32bpp) mendukung 4.294.967.296 warna berbeda dan menyimpan 1 piksel per DWORD 4-byte. Setiap DWORD dapat menentukan sampel alfa, merah, hijau, dan biru dari piksel.

In order to resolve the ambiguity of which bits define which samples, the DIB headers provide certain defaults as well as specific BITFIELDS, which are bit masks that define the membership of particular group of bits in a pixel to a particular channel. The following diagram defines this mechanism:

Diag. 2 – The BITFIELDS mechanism for a 32-bit pixel depicted in RGBAX sample length notation

Diag. 2 – Mekanisme BITFIELDS untuk piksel 32-bit yang digambarkan dalam notasi panjang sampel RGBAX

Bidang sampel yang ditentukan oleh topeng bit BITFIELDS harus bersebelahan dan tidak tumpang tindih, tetapi urutan bidang sampel bersifat arbitrer. Urutan bidang yang paling umum adalah: Alfa, Biru, Hijau, Merah (MSB ke LSB). Masker bit merah, hijau, dan biru hanya valid jika anggota Kompresi header DIB diatur ke BI_BITFIELDS. Masker bit alfa valid jika ada di header DIB atau jika anggota Kompresi header DIB disetel ke BI_ALPHABITFIELDS (khusus Windows CE).

Diag. 3 – The pixel format with an alpha channel for a 16-bit pixel (in RGBAX sample Length notation) actually generated by Adobe Photoshop[22]

Diag. 3 – Format piksel dengan saluran alfa untuk piksel 16-bit (dalam notasi panjang sampel RGBAX) sebenarnya dihasilkan oleh Adobe Photoshop
All of the possible pixel formats in a DIB

Semua kemungkinan format piksel dalam DIB

Subtipe video RGB

Mekanisme BITFIELD yang dijelaskan di atas memungkinkan definisi puluhan ribu format piksel berbeda, namun hanya beberapa di antaranya yang digunakan dalam praktik, semua format palet RGB8, RGB4, dan RGB1 (ditandai dengan warna kuning pada tabel di atas, ditentukan dalam dshow.h Nama .MEDIASUBTYPE):

Uncompressed RGB Video Subtypes[23]
R.G.B.A.XRGB subtypeR.G.B.A.XARGB subtype
8.8.8.0.8RGB328.8.8.8.0ARGB32
10.10.10.2.0A2R10G10B10
8.8.8.0.0RGB2410.10.10.2.0A2B10G10R10
5.6.5.0.0RGB5654.4.4.4.0ARGB4444
5.5.5.0.1RGB5555.5.5.1.0ARGB1555

 

Bit fields for ten RGB bits[23]
Bit fieldOffsetBitsA2R10G10B10BitsA2B10G10R10
Red36h00 00 F0 3FLE: 3FF000002029FF 03 00 00LE: 000003FF 0 9
Green3Ah00 FC 0F 00LE: 000FFC00101900 FC 0F 00LE: 000FFC001019
Blue3EhFF 03 00 00LE: 000003FF 0 900 00 F0 3FLE: 3FF000002029
Alpha42h00 00 00 C0LE: C0000000303100 00 00 C0LE: C00000003031

Dalam versi 2.1.4 FFmpeg mendukung (dalam terminologinya sendiri) format piksel BMP bgra, bgr24, rgb565le, rgb555le, rgb444le, rgb8, bgr8, rgb4_byte, bgr4_byte, grey, pal8, dan monob; yaitu, bgra adalah satu-satunya format piksel yang didukung dengan transparansi.

 

Penggunaan format BMP
Kesederhanaan format file BMP, dan keakrabannya yang meluas di Windows dan di tempat lain, serta fakta bahwa format ini didokumentasikan dengan relatif baik dan memiliki format terbuka, menjadikan BMP format yang sangat umum yang dapat dilakukan oleh program pengolah gambar dari banyak sistem operasi. Baca dan tulis. File ICO dan CUR berisi bitmap yang dimulai dengan BITMAPINFOHEADER.

Banyak antarmuka pengguna grafis lama menggunakan bitmap dalam subsistem grafis bawaannya;[25] misalnya, subsistem GDI platform Microsoft Windows dan OS/2, di mana format khusus yang digunakan adalah format file bitmap Windows dan OS/2, biasanya dinamai dengan ekstensi file .BMP.

Sementara sebagian besar file BMP memiliki ukuran file yang relatif besar karena kurangnya kompresi (atau umumnya pengkodean run-length rasio rendah pada gambar palet), banyak file BMP dapat dikompresi dengan algoritma kompresi data lossless seperti ZIP karena mengandung redundan data. Beberapa format, seperti RAR, bahkan menyertakan rutinitas yang secara khusus ditargetkan pada kompresi data yang efisien.

Format terkait
Artikel utama: Format file gambar
Sistem X Window menggunakan format XBM serupa untuk gambar hitam-putih, dan XPM (pixelmap) untuk gambar berwarna. Ada juga berbagai format “mentah”, yang menyimpan data mentah tanpa informasi lain. Format Portable Pixmap (PPM) dan Truevision TGA juga ada, tetapi lebih jarang digunakan – atau hanya untuk tujuan khusus; misalnya, TGA dapat berisi informasi transparansi.

This entry was posted in . Bookmark the permalink.

SIGN UP FOR NEWSLETTER

Signup for our newsletter to get notified about news and new products.