是否有适用于 Linux 的 fp8(Fast PAQ)压缩实用程序?

是否有适用于 Linux 的 fp8(Fast PAQ)压缩实用程序?

我正在尝试压缩大量类似的 JPG 图像。到目前为止,我发现的最佳压缩算法是FP8。在这个问题我展示我的测试并询问更好的选择。但 fp8 是迄今为止我发现的最好的。它将我的数据集缩小到其大小的 80%,比任何其他传统压缩实用程序(zip、z7、rar、tar、bz2 等)都要好,即使它仍然不理想(请访问那个问题如果您有更好的选择的建议)。

然而,fp8 似乎是我发现的一个废弃的实用程序,仅适用于 Windows(我已经在 wine 下运行它进行了测试)。

是否有任何实用程序可以在 Linux 上实现 fp8 算法?

我在 Ubuntu 存储库中找到了 zpaq,它还提供了一种实现PAQ压缩。然而,它在类似的 JPG 图像上表现要差得多。这就是为什么我专门寻找 fp8 或具有类似或更好性能的类似 JPG 图像的原因。

答案1

FP8 格式似乎是已被其作者淘汰,转而采用 ZPAQ 格式,这就是为什么你找不到更新版本的原因:

ZPAQ 旨在以可移植的标准格式以类似或更好的压缩方式取代 PAQ 及其变体(PAQ8、PAQ9A、LPAQ、LPQ1 等)。当前版本的 PAQ 打破了每次压缩改进的存档兼容性。 ZPAQ 旨在解决这个问题。我不再维护旧的 PAQ 代码。

ZPAQ 的 Ubuntu 发行版似乎已经过时了,因此您可能想使用 ZPAQ 网站上的版本进行升级:https://pkgs.org/download/zpaq。较新的版本支持更多有关压缩行为的选项(来自ZPAQ 文档):

-m类型[块大小[.pre[.arg][比较[.arg]]…]]

-method 类型[块大小[.pre[.arg][比较[.arg]]…]]

使用add,选择压缩方法。类型可以是012345x、 或s。可选的块大小可能是 0..11,在类型后面不留空格,例如-m10-method 511。其余参数以句点或逗号分隔,不带空格,仅适用于类型xs,例如 -mx4.3ci1

如果类型是数字,则数字越大压缩效果越好,但速度越慢。默认为-m1.建议用于备份。-m2 压缩速度较慢,但​​解压缩速度与1.建议对档案进行一次压缩,多次解压,例如下载。-m0存储进行重复数据删除但不进一步压缩。

块大小表示将碎片打包成最多 2^ 的块块大小米布。使用较大的块可以提高压缩率,但需要更多内存,并且速度可能会较慢,因为每个块都是由单独的线程压缩或解压缩的。内存需求高达8倍块大小对于级别 4,每个线程为块大小的 16 倍;对于级别 5,每个线程为块大小的 16 倍。默认值块大小对于类型 0 和 1,为 4 (16 MiB),否则为 6 (64 MiB)。

[...]

我首先尝试使用-m2through-m5来看看是否可以获得类似的压缩(-m1是默认设置,旨在实现大小和速度之间的平衡:它相当于-1在其他程序中。)

您还可以使用其他调整(查看文档),但除非您必须有特定的设置,例如-method x6.1.4.0.5.27.1(“64 MiB 块 (6)、可变长度 LZ77 不带 E8E9 (1)、最小匹配长度 4、无需二次搜索(0),后缀数组中每个方向的搜索深度 2^5 = 32 (27 = 6 + 21),以及 1 字节前瞻”[来自文档!]),不用担心;预定义的设置可能工作正常。

如果您绝对需要原始的 FP8 程序,它是可用的以 GitHub 上的源代码形式。您将需要gitnasm32 位 GCC 工具链(这些程序具有 32 位汇编文件,这会阻止它们构建为 64 位程序。)

答案2

经过一些额外的研究,我发现最新一代的 paq8 算法(其中 fp8 是其中一个版本)正在 paq8pxd 软件中开发。 git 存储库是这里,之前版本的历史是这里。基准测试、二进制文件和更多信息通常发布在Paq8pxd 字典线程在encode.ru。

paq8 包含 JPG 模型,因此它能够将 JPG 文件无损压缩至原始大小的 70-80%。然而,尽管 zpaq 是一个较新的软件包,但它并不包含这样的模型,这解释了它在 JPG 图像上的性能要低得多。

关于 zpaq,Ubuntu 存储库中的版本非常过时(v1.10)。可以找到最新版本(v7.14)这里,并且它包含一个 Makefile,使得在 Ubuntu 中编译非常容易。然而,它仍然不包含 JPG 模型,因此,它在 jpg 文件上表现不佳,并且在该特定应用程序中的性能优于基于 paq8 的旧包。

相关内容