c# - zlib 压缩大于最大压缩

标签 c# compression max zlib

大家好,我需要使用 zlib 的压缩级别方面的帮助。我正在尝试为游戏编写一个应用程序,该游戏对文件进行 zlib 压缩。

我可以毫无问题地解压缩文件,但无法将文件重新压缩到同一级别。重新压缩的文件总是稍大一些。我需要压缩文件的大小相同或更小,因为游戏不会读取更大的文件。

我的应用程序是用 C# 编码的。我尝试过使用 zlib.net 以及 system.io.compression 命名空间,但即使指定了最大压缩,两者也无法充分压缩文件。

对于 System.IO.Compression 命名空间,我指定 CompressionLevel.Optimal。

对于 zlib.net,我指定 zlib.zlibConst.Z_BEST_COMPRESSION 。

我附上了下面的文件,其中包括原始文件以及使用 zlib.net 和 system.io.compression 压缩的文件。

感谢您提供的任何帮助:

在此处下载文件:http://www13.zippyshare.com/v/j7EsgTDo/file.html

最佳答案

通过使用命令行工具 gzip -9 压缩解压后的数据,我能够准确地复制您的 000C_original_file.zlib,然后通过剥离gzip header 和尾部,并用 zlib header 和尾部重新包装它。几乎可以肯定,原作就是这样制作的。

正如 @usr 建议的那样,您可以使用 Zopfli 重新压缩以获得更小的文件。我用过pigz -11z使用 Zopfli(压缩级别 11)压缩为 zlib 格式,结果比原始文件小,为 3863127 字节,而原始文件为 3942494 字节。

关于c# - zlib 压缩大于最大压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002715/

相关文章:

c# - 分配给 '....' 的表达式必须是常量

image-processing - 通过命令行压缩具有不同页面格式的多页 TIF 文件

c - 最小值和最大值不是数组中的数字

java - 在java中返回整数参数的最大值

generics - 标准二进制 maxBy 函数

c# - Azure工作主机未运行.net 4.5.1?

c# - 在回发时将 ListBox 选择保持在 session 中

c# - 如何使用 AJAX 将对象数组从 View 传递到 Controller

powershell - 使用 PowerShell 归档没有某些子文件夹和文件的文件夹

wcf - .NET 4.5 和 WCF 请求压缩