压缩位图行程编码格式的方法
压缩位图行程编码格式的方法
关于位图行程编码格式压缩---Window中的位图支持行程编码压缩方式,通常位图的象素使用4比特或者8比特来表示,即BITMAPINFOHEADER结构中的biCompression的BI_RLE8和BI_RLE4
1.8位位图的压缩
---在这种情况下BITMAPINFOHEADER结构中的biCompression设置为BI_RLE8,.
使用256色位图行程编码格式将位图进行压缩。这种压缩方式包括绝对方式和编码方式。
编码方式
---在此方式下每两个字节组成一个信息单元。第一个字节给出其后面相连的象素的个数。
第二个字节给出这些象素使用的颜色索引表中的索引。
例如:信息单元03 04,03表示其后的象素个数是3个,04表示这些象素使用的是颜色索引表中的第五项的值。
压缩数据展开后就是04 04 04 .同理04 05 可以展开为05 05 05 05. 信息单元的第一个字节也可以是00,
这种情况下信息单元并不表示数据单元,而是表示一些特殊的含义。
这些含义通常由信息单元的第二个字节的值来描述。这些值在0x00到0x02之间。
具体含义如下:
第二个字节的值
00 线结束
01 位图结束
02 象素位置增量。表示紧跟在这个字节后面的信息单元里的两个字节中所包含的
无符号值指定了下个象素相对于当前象素的水平和垂直偏移量。
例如:00 02 06 08表示的含义是下一个象素的位值是从当前位置向右移动5个象素,
向下移动8个象素。(不是字节)
绝对方式
---绝对方式的标志是第一个字节是0,第二个字节是0x03到0xff之间的值。
第二个 字节的值表示跟随其后面的象素的字节数目。每个字节都包含一个象素的颜色索引。
每个行程编码都必须补齐到字的边界。
2. 4位位图压缩
---这是BITMAPINFOHEADER的biCompression设置为BI_RLE4,
使用16位行程编码格式进行位图压缩。压缩方式也包括编码方式和绝对方式。
编码方式:
---4位压缩的编码方式跟8位的编码的压缩方式没有什么区别。
每个信息单元也是由 两个字节表示,第一个字节表示其后面所跟随的象素的个数。
第二个字节表示象素在 颜色索引表中的索引。
这个字节又分为上下两个部分。第一个象素用上半部分指定的 颜色表中的颜色画出。
第二个象素用下半部分的颜色画出。第三个象素用下一个字节 的上半部分画出。
依次类推。 其余的跟8位位图压缩差不多。