我试图理解 PNG 的压缩 - 但我似乎
网上查了很多自相矛盾的资料...
我想了解
- LZ77部分:带链表的哈希表中的搜索是如何完成的?这是在 deflate 中定义的吗?或者在zlib中实现?可以选择搜索方法吗?
- PNG 编码器/解码器可以设置一些压缩参数(策略、过滤器等),或者 PNG 是否有默认值?
- LZ77 部分是否进行贪婪或惰性评估?或者这也是一个选择吗?
- 最后:两棵霍夫曼树,它们是否被压缩在第三棵树中,并且所有三棵树都被编码了?或者这两棵树仅用它们的代码长度进行编码?
zlib 实现与其他 deflate 实现不同吗?也许这就是我所有困惑的来源?
感谢您的任何帮助!!我的新工作需要这个
LuCu
PNG压缩是在zlib https://www.rfc-editor.org/rfc/rfc1950格式。 zlib 格式使用deflate https://www.rfc-editor.org/rfc/rfc1951。使用的代码通常是zlib库 http://zlib.net/.
格式未指定用于压缩的算法。 zlib 库 deflate 算法使用哈希链在滑动窗口中搜索匹配的字符串。 zlib 的 deflate 采用几个参数进行压缩调整 -- 请参阅deflateInit2() https://github.com/madler/zlib/blob/master/zlib.h#L527.
deflate 格式指定动态块前面的霍夫曼编码的压缩。文字/长度和距离代码代码长度是游程长度和霍夫曼编码本身。
放气压缩机还有其他实现LZMA SDK http://www.7-zip.org/sdk.html and 谷歌的zopfli https://code.google.com/p/zopfli/,这两种方法都使用更密集的方法,需要更多的时间才能获得较小的压缩收益。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)