没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Gzip Zlib PNG 压缩算法
作者:不详 来源:互联网 酷勤网收集 2008-05-13
摘要
酷勤网
gzip,zlib,以及图形格式 png,使用的是同一个压缩算法 deate。我们通过对 gzip 源
码的分析来对 deate 压缩算法做一个详细的说明 gzip 对于要压缩的文件,首先使用 lz77
算法进行压缩,对得到的结果再使用 human 编码的方法进行压缩。
gzip,zlib,以及图形格式 png,使用的是同一个压缩算法 deate。我们通过对 gzip 源码的分析来对
deate 压缩算法做一个详细的说明。我阅读的 gzip 版本为 gzip-1.2.4。我们对算法做三种程度的说明。
第一种程度,对 gzip 所使用压缩算法基本原理的说明。第二种程度,对 gzip 压缩算法实现方法的说明。
第三种程度,对 gzip 实现源码级的说明。
如果你有时间的话,我建议你先不要看下面的内容,自己尝试通过读 gzip 源码,来了解它的压缩解压缩
是如何实现的,这将会是一个非常有趣的智力游戏,千万不要错过。当一个又一个的谜被解开时,那感觉
就像唐伯虎同志所说的,“慷慨然诺杯酒中”。(小唐的诗,除了另一个倒霉蛋曹雪芹外,好像不太被人
提。)
1 gzip 所使用压缩算法的基本原理
gzip 对于要压缩的文件,首先使用 lz77 算法进行压缩,对得到的结果再使用 human 编码的方法
进行压缩。所以我们分别对 lz77 和 human 编码的原理进行说明。
1.1 ... 1.2 ...
2 gzip 压缩算法实现方法
2.1 LZ77 算法的 gzip 实现
首先,gzip 从要压缩的文件中读入 64KB 的内容到一个叫 window 的缓冲区中。为了简单起见,我
们以 32KB 以下文件的压缩为例做说明。对于我们这里使用 32KB 以下文件,gzip 将整个文件读入到
window 缓冲区中。然后使用一个叫 strstart 的变量在 window 数组中,从 0 开始一直向后移动。
strstart 在每一个位置上,都在它之前的区域中,寻找和当前 strstart 开始的串的头 3 个字节匹配的串,
并试图从这些匹配串中找到最长的匹配串。
如果当前的 strstart 开始的串,可以找到最少为 3 个字节的匹配串的话,当前的 strstart 开始的匹
配长度那么长的串,将会被一个<匹配长度,到匹配串开头的距离>对替换。
如果当前的 strstart 开始的串,找不到任何的最少为 3 个字节的匹配串的话,那么当前 strstart 的
所在字节将不作改动。
为了区分是一个<匹配长度,到匹配串开头的距离>对,还是一个没有被改动的字节,还需要为每一个
没有被改动的字节或者<匹配长度,到匹配串开头的距离>对,另外再占用一
资源评论
- wwllzz882013-03-06是一个讲算法的文章
- linshuaigoahead2014-07-09讲解性比较强,但还需要自己实现,如果需要了解算法的话可以参考!
- ilxw5212015-02-05发布图片用不到 基本上使用nginx gzip
- chenyuanfen2015-06-15还没用呢 不知道好不好用
shulia1337
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功