RLE压缩也称行程压缩,RLE压缩的基本思路:将重复的数据内容用数字表示
eg:(压缩前)12,12,12,33,4,55,55,66,66,66,77
(压缩后)3 12,1 33,1 4,2 55,3 66,1 77
基本格式为数量+数据。
TGA图像的RLE压缩:
压缩过程:
将数据分为两大类:
非压缩块: 将一段连续的像素数据直接存储在文件中。这些像素是按顺序排列的,没有任何额外的压缩操作。
压缩块: 存储一个颜色值,并在块头部指示这个颜色值要重复的次数。这个方法特别适合颜色相同的像素块,可以显著减少数据量。
在每一大类前都放置头部(chunkheader
)标识块
读取数据:
非压缩数据块: 每个块前的头部(chunkheader
)标识块的大小(实际像素数量减去1),例如,如果chunkheader
是5,表示这个块包含6个连续的像素数据。
压缩数据块: 这些数据块包含一个重复的像素数据,前面的chunkheader
指示要重复的次数(减去127)。例如,如果chunkheader
是128,则实际的重复次数是1,若chunkheader
是129,则实际的重复次数是2,以此类推。
解码过程:
解码过程:
读取chunkheader
来判断是非压缩块还是压缩块。
对于非压缩块,读取指定数量的颜色值并存储。
对于压缩块,读取一个颜色值并重复指定的次数来恢复图像数据。