Aracılığıyla paylaş


Bit Eşlem Sıkıştırma

Windows, piksel başına 8 veya 4 bit ile renklerini tanımlayan bit eşlemleri sıkıştırma biçimlerini destekler. Sıkıştırma, bit eşlem için gereken disk ve bellek depolama alanını azaltır.

Bit eşlem bilgileri üst bilgi yapısının üyesi Sıkıştırması BI_RLE8 olduğunda, 8 bit bit eşlemi sıkıştırmak için bir çalıştırma uzunluğu kodlama (RLE) biçimi kullanılır. Bu biçim kodlanmış veya mutlak modlarda sıkıştırılabilir. Her iki mod da aynı bit eşlem içinde herhangi bir yerde gerçekleşebilir:

  • Kodlanmış mod iki bayt içerir: ilk bayt, ikinci baytta yer alan renk dizini kullanılarak çizilecek ardışık piksel sayısını belirtir. Buna ek olarak, ikinci bayt değerine bağlı olarak, bir çizginin sonunu, bit eşlem sonunu veya deltayı belirten bir kaçış karakterini göstermek için çiftin ilk bayt değeri sıfır olarak ayarlanabilir. Kaçışın yorumlanması, çiftin ikinci baytının değerine bağlıdır ve bu değer aşağıdaki değerlerden biri olabilir.
Değer Anlam
0 Satır sonu.
1 Bit eşlem sonu.
2 Delta. Kaçışı izleyen 2 bayt, geçerli konumdan sonraki pikselin sağa ve yukarı uzaklığını gösteren işaretsiz değerler içerir.

 

  • mutlak modda ilk bayt sıfır, ikinci bayt ise 03H ile FFH arasındaki bir değerdir. İkinci bayt, izleyen bayt sayısını temsil eder ve her biri tek bir pikselin renk dizinini içerir. İkinci bayt iki veya daha az olduğunda kaçış, kodlanmış modla aynı anlama gelir. Mutlak modda, her çalıştırmanın 16 bit sözcük sınırında bitmesi için sıfır tuşlu olması gerekir.

Aşağıdaki örnek, 8 bit sıkıştırılmış bit eşleminin onaltılık değerlerini gösterir:

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

Bit eşlem aşağıdaki gibi genişler (iki basamaklı değerler tek bir piksel için renk dizinini temsil eder):

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 

Sıkıştırma üyesi BI_RLE4, bit eşlem, kodlanmış ve mutlak modları da kullanan 4 bit bit eşlem için çalışma uzunluğu kodlama biçimi kullanılarak sıkıştırılır:

  • Kodlanmış modda, çiftin ilk baytı, ikinci bayttaki renk dizinleri kullanılarak çizilecek piksel sayısını içerir. İkinci bayt, biri yüksek sıralı 4 bit, diğeri düşük sıralı 4 bit olan iki renk dizini içerir. Piksellerin ilki yüksek sıralı 4 bit tarafından belirtilen renk kullanılarak, ikincisi düşük sıralı 4 bitteki renk kullanılarak çizilir, üçüncüsü yüksek sıralı 4 bitteki renk kullanılarak çizilir ve bu şekilde, ilk bayt tarafından belirtilen tüm pikseller çizilene kadar bu şekilde devam eder.
  • Mutlak modda ilk bayt sıfırdır. İkinci bayt, izleyen renk dizinlerinin sayısını içerir. Sonraki baytlar, her piksel için bir renk dizini olan yüksek ve düşük sıralı 4 bitlerinde renk dizinleri içerir. Mutlak modda, her çalıştırma bir sözcük sınırına hizalanmalıdır. BI_RLE8 için açıklanan satır sonu, bit eşlem sonu ve delta çıkışları da BI_RLE4 sıkıştırma için geçerlidir.

Aşağıdaki örnek, 4 bit sıkıştırılmış bit eşleminin onaltılık değerlerini gösterir:

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

Bit eşlem aşağıdaki gibi genişler (tek basamaklı değerler tek bir piksel için renk dizinini temsil eder):

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