Bagikan melalui


Pemadatan Bitmap

Windows mendukung format untuk mengompresi bitmap yang menentukan warnanya dengan 8 atau 4 bit per piksel. Pemadatan mengurangi penyimpanan disk dan memori yang diperlukan untuk bitmap.

Ketika Kompresi anggota struktur header informasi bitmap BI_RLE8, format pengodean panjang eksekusi (RLE) digunakan untuk mengompresi bitmap 8-bit. Format ini dapat dikompresi dalam mode dikodekan atau absolut. Kedua mode dapat terjadi di mana saja dalam bitmap yang sama:

  • mode Dikodekan terdiri dari dua byte: byte pertama menentukan jumlah piksel berturut-turut yang akan digambar menggunakan indeks warna yang terkandung dalam byte kedua. Selain itu, byte pertama pasangan dapat diatur ke nol untuk menunjukkan karakter escape yang menunjukkan akhir baris, akhir bitmap, atau delta, tergantung pada nilai byte kedua. Interpretasi escape tergantung pada nilai byte kedua dari pasangan, yang dapat menjadi salah satu nilai berikut.
Nilai Arti
0 Akhir baris.
1 Akhir bitmap.
2 Delta. 2 byte setelah escape berisi nilai yang tidak ditandatangani yang menunjukkan offset ke kanan dan atas piksel berikutnya dari posisi saat ini.

 

  • Dalam mode absolut , byte pertama adalah nol dan byte kedua adalah nilai dalam rentang 03H hingga FFH. Byte kedua menunjukkan jumlah byte yang mengikuti, yang masing-masing berisi indeks warna satu piksel. Ketika byte kedua adalah dua atau kurang, escape memiliki arti yang sama dengan mode yang dikodekan. Dalam mode absolut, setiap eksekusi harus nol-padded untuk berakhir pada batas kata 16-bit.

Contoh berikut menunjukkan nilai heksadesimal dari bitmap terkompresi 8-bit:

[03 04] [05 06] [00 03 45 56 67 00] [02 78] [00 02 05 01] 
[02 78] [00 00] [09 1E] [00 01] 

Bitmap diperluas sebagai berikut (nilai dua digit mewakili indeks warna untuk satu piksel):

04 04 04 
06 06 06 06 06 
45 56 67 
78 78 
move current position 5 right and 1 up 
78 78 
end of line 
1E 1E 1E 1E 1E 1E 1E 1E 1E 
end of RLE bitmap 

Ketika anggota Kompresi BI_RLE4, bitmap dikompresi dengan menggunakan format pengodean panjang eksekusi untuk bitmap 4-bit, yang juga menggunakan mode yang dikodekan dan absolut:

  • Dalam mode dikodekan, byte pertama pasangan berisi jumlah piksel yang akan digambar menggunakan indeks warna di byte kedua. Byte kedua berisi dua indeks warna, satu dalam urutan tinggi 4 bit dan satu dalam urutan rendah 4 bit. Piksel pertama digambar menggunakan warna yang ditentukan oleh 4 bit urutan tinggi, yang kedua digambar menggunakan warna dalam urutan rendah 4 bit, yang ketiga digambar menggunakan warna dalam urutan tinggi 4 bit, dan sebagainya, sampai semua piksel yang ditentukan oleh byte pertama telah digambar.
  • Dalam mode absolut, byte pertama adalah nol. Byte kedua berisi jumlah indeks warna yang mengikuti. Byte berikutnya berisi indeks warna dalam 4 bit berurutan tinggi dan rendah, satu indeks warna untuk setiap piksel. Dalam mode absolut, setiap eksekusi harus diratakan pada batas kata. Escape akhir baris, akhir bitmap, dan delta yang dijelaskan untuk BI_RLE8 juga berlaku untuk kompresi BI_RLE4.

Contoh berikut menunjukkan nilai heksadesimal dari bitmap terkompresi 4-bit:

03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 
04 78 00 00 09 1E 00 01 

Bitmap diperluas sebagai berikut (nilai digit tunggal mewakili indeks warna untuk satu piksel):

0 4 0 
0 6 0 6 0 
4 5 5 6 6 7 
7 8 7 8 
move current position 5 right and 1 up 
7 8 7 8 
end of line 
1 E 1 E 1 E 1 E 1 
end of RLE bitmap