的值颁是有规律的,以256色的GIF文件中,第258511元素中值的范围是0510,正好可用9位的二进制数表示,第5121023元素中值的范围是01022,正好可用10位的二进制数表示,第10242047元素中值的范围是02046,正好用11位的二进制数表示,第20484095元素中值的范围是04094,正好用12位的二进制数表示。用可变位数存贮代码时,基础位数为图象色彩位数加1,随着代码数的增加,位数也在加大,直到位数超过为12(此时字符串表中的字符串个数正好为2的12次方,即4096个)其基本方法是:每向代码流加入一个。字符,就要判别此字符所在串在串表中的位置(即下标)是否超过2的当前位数次方,一旦超过,位数加1。如在4位图象中,对于刚开始的代码按5位存贮,第一个字节的低5位放第一个代码,高三位为第二个代码的低3位,第二个字节的低2位放第二个代码的高两位,依次类推。对于8位(256色)的图象,其基础位数就为9,一个代码最小要放在两个字节。
36压缩范围
3
f以下为256色GIF文件编码实例,如果留心您会发现这是一种奇妙的编码方法,同时为什么在压缩完成后不再需要串表,而且还在解码时根据代码流信息能重新创建串表。字符串121111234123459…当前码21111234123459…当前前缀1211260125834125826245…当前数组2111341459…数组下标258259260261262263264265266267…代码流1212602583426245…GIF文件作为一种重要的图形图象文件格式,尽管其编码规则极复杂,但其压缩效率是极高的,特别是对某些平滑过渡的图象的图形,压缩效果更好。同时由于其在压缩过程中的对图象信息能够完整的保存,在目前流行的电子图片及电子图书中得到了广泛的应用。
算法的简单示例四、LZW算法的简单示例
对原始数据ABCCAABCDDAACCDB进行LZW压缩,原始数据中,只包括4个字符CharacterABCD四个字符可以用一个2bit的数表示,0A1B2C3D从最直观的角度看,原始字符串存在重复字符:ABCCAABCDDAACCDB,用4代表AB5代表CC,上面的字符串可以替代表示为45A4CDDAA5DB这样是不是就比原数据短了一些呢!
算法的适用范围五、LZW算法的适用范围
为了区别代表串的值Code和原来的单个的数据值Stri
g,需要使它们的数值域不重合,上面用03来代表AD那么AB就必须用大于3的数值来代替,再举另外一个例子,原来的数值范围可以用8bit来表示,那么就认为原始的数的范围是0~255,压缩程序生成的标号的范围就不能为0~255(如果是0255,就重复了)。只能r