PNG:deflate和zlib

时间:2014-02-16 21:08:46

标签: png zlib huffman-code deflate

我正在尝试理解PNG中的压缩 - 但我似乎

在网上找到很多矛盾的信息...... 我想明白 - 如何在LZ77-part中完成搜索:带有链表的哈希表?这是在deflate中定义的吗?或在zlib中实现?有搜索方法的选择吗? - PNG编码器/解码器可以为压缩设置一些参数(策略,过滤器等),还是PNG有默认值? - LZ77部分做贪婪或懒惰的评估吗?或者这也是一个选择? - 最后:2个霍夫曼树,它们是在第三棵树中压缩的,而且它们都被编码了?或者是仅使用其代码长度编码的2棵树?

zlib实现是否与其他deflate实现不同?也许这就是我所有困惑的来源?

感谢您的帮助!!我的新工作需要这个

LuCu

1 个答案:

答案 0 :(得分:5)

PNG压缩采用zlib格式。 zlib格式使用deflate。使用的代码通常是zlib library

格式未指定用于压缩的算法。 zlib库deflate算法使用哈希链在滑动窗口中搜索匹配的字符串。 zlib的deflate需要几个参数进行压缩调整 - 请参阅deflateInit2()

deflate格式指定动态块前面的Huffman代码的压缩。文字/长度和距离代码长度是游程长度,霍夫曼自己编码。

LZMA SDKGoogle's zopfli中还有其他一些deflate压缩器的实现,其中两者都使用更密集的方法,这些方法需要更多的时间来获得压缩的小增益。