制作 7zip 文件时要使用哪些设置才能获得最大压缩率?我正在压缩包含扫描图像的 PDF 文档。我正在考虑使用 LZMA2,但我不知道在字典大小、字大小等方面要设置什么。此外,LZMA 或 PPMd 会是更好的选择吗?
我需要通过网络传输一些文件(~200MiB),这里的上传速度非常慢,所以我想尽可能地压缩数据。消耗的 CPU 时间不是很重要。
编辑
这是我测试各种压缩方法后得到的结果:
未压缩大小为:25,462,686B
我的处理器是 Intel Core 2 Due T8100,有 4GiB 的 RAM。
最佳压缩是使用 PAQ8O 算法的 PeaZip。生成的文件大小为 19,994,325B。使用的设置是压缩级别:最大。不幸的是,压缩速度约为 5KiB/s,因此压缩数据需要一个多小时。
接下来是实验性的 PAQ9O 压缩器。使用它,我在大约 3 分钟的压缩中得到了 20,132,660B。不幸的是,该程序仅是命令行,并且没有太多其他程序使用该压缩算法。它还使用大约 1.5GiB 的 RAM,我使用的设置(a -9 -c)
之后是使用 LZMA2 的 7-Zip 9.15 beta (2010-06-20)。使用它,我在大约 3 分钟内获得了 20,518,802B。使用的设置是字长 273、字典大小 64MB,我使用了 2 个线程进行压缩。
现在回到我最初的问题:就我而言,实心块大小没有产生任何明显的结果。增加字大小确实产生了一些结果。最大字大小和最小字大小之间的差异为 115,260B。我相信这样的节省确实值得进行两次必要的点击并更改字大小。
我尝试使用 7zip 和 PeaZip 支持的其他压缩算法,它们生成的文件大小从 19.8MiB 到 21.5MiB。
最后我的结论是,当压缩主要包含图像的 PDF 文档时,使用奇特的压缩算法是没有道理的。使用 7zip 中的 LZMA2 进行压缩可以在最短的时间内产生相当可接受的结果。
答案1
PDF 的内容(文本和图像)可能已经被压缩 - 因此尝试再次压缩它们不会有太大的好处。
答案2
尝试预合成- 它首先解压 PDF 中已压缩的数据。然后 7z 便可以对未压缩的数据施展魔法。
还可以尝试 nanozip,我已经验证它非常有效,而且效率很高(在 PAQ 算法的压缩比下为 400kb/s)。
答案3
7za a -t7z -mx-9 -mfb=258 -mpass=15 文件名.7z 子目录
根据需要调整命令行可执行文件名称的第一个单词,并调整“-mpass=15”之后的部分以自定义文件名及其应包含的内容。
这个答案并不针对 PDF 文档。
它使用 LZMA,而不是 PPM。我远离了 PPM,因为有太多变体与其他变体不兼容。LZMA 看起来更稳定,兼容性得到更广泛的支持。所以我远离了 PPM,正是因为我的观点是,正如你所说的那样,“使用奇特的压缩算法所需的努力是不合理的。”
答案4
lzma 压缩是最好的,因为你可以制作具有高压缩率的 sfx 文件或 msi 包。在你的情况下,你没有压缩大文件,所以差异很小,特别是如果文件已被压缩,例如:mp3 或 png
尝试 win arc,它是免费的,并且压缩率很高