从7zip压缩算法中获得最大压缩

4

我正在尝试压缩一些较大的文档文件。但是大多数文件只能压缩最多10%。我正在使用7zip终端命令。

7z a filename.7z -m0=LZMA -mx=9 -mmt=on -aoa -mfb=64 filename.pptx

有没有更改参数的建议。我需要至少30%的压缩比。

4个回答

8

.pptx文件或.docx文件实际上是内部为.zip压缩包的文件。在已经被压缩的文件上,您不应该期望有太多的压缩效果。

文档说明了lzma2可以更好地处理无法压缩的数据,因此您可以尝试使用它。

7z a -m0=lzma2 -mx filename.7z filename.pptx

但是要求的30%几乎是难以达到的。

谢谢您,但大小没有任何区别。 - Shilpi Agrawal
哪个文档? - Hashim Aziz
1
@Hashim,不确定其他系统,但在Windows中,7Zip下载包中包含一个.chm文件。在这个文件中,在命令行“-m(设置压缩方法)”下的LZMA2配置中,当枚举LZMA2相对于LZMA的优势时,指出:“对于无法压缩的数据具有更好的压缩比”。 - MC ND

6
如果你真的需要压缩文件,你可以利用pptx实际上只是一个复杂的zip文件这个事实:
先解压pptx,然后使用7zip进行压缩。要恢复等效(但不完全相同)的pptx,请使用7zip进行解压缩并使用zip重新压缩。
可能会出现一些复杂情况,例如在epub中,必须将某个文件以未压缩状态存储为存档中的第一个文件,并在距离开头的特定偏移处存储。我不熟悉pptx,但它可能有类似的要求。
我认为小幅度减少文件大小不值得麻烦,但这是我能想到的唯一方法。
根据pptx文件大小的原因,您还可以尝试压缩包含的文件。例如,通过使用更好的压缩程序重新压缩png文件,剥离不必要的数据(例如元数据或更改历史记录),或者对jpeg文件应用低质量设置的有损压缩。

2

这只是一个最大压缩的想法:

  1. 使用-m0(存储=无压缩)“重新压缩”这些.zip归档文件(.docx、.pptx、jar...),然后
  2. 对它们应用lzma2。

lzma2非常好 - 但是如果文件包含许多jpg,请考虑尝试开源软件PeaZip或更具体地说paq8o。Paq8具有内置JPEG压缩器并支持范围压缩。因此,它也将处理包含在其他文件中的jpg。相比之下,Winzip的zipx则需要纯粹的jpg文件,在这种情况下无用。

但是为了使PAQ有效地工作/压缩目标文件,您需要“null” zip/deflate压缩,将其转换为未压缩的zip。

PAQ可能有点奇特,但在我看来,它比zipx更诚实和清晰。PAQ不受支持,因此像往常一样,建议搜索您不了解的内容,您会找到一些东西。相比之下,zipx可能看起来有点神秘,因为它看起来像一个普通的zip文件,并且在Winrar或7zip中文件的列表正确,但是当您想要提取jpg时,它会失败,因此如果用户没有经验,则可能会看起来像zip文件已损坏。这将更难发现是zipx,到目前为止只有WinZip或The Unarchiver(unar.exe)可以正确处理。


1
PPTX、XLSX和DOCX文件如果存在多个,确实可以有效压缩。将它们解压到各自的目录中后,压缩工具可以找到它们之间的共同点,去重公共文本和样板XML。
如果必须使用ZIP格式,请先创建一个零压缩的“存储”归档文件,其中包含所有文件,然后再进行ZIP压缩。这是必要的,因为ZIP归档文件中的每个文件都是从头开始压缩的,而没有利用不同文件之间的冗余性。
通过利用样板去重技术,30%的压缩率应该很容易实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接