zlib解压后得到与原始文件不同的大小

Ser*_*eis 3 python pdf zlib

我有来自 .PDF 的原始数据集,并尝试解压缩和压缩它们而不丢失数据。

这是我的一些代码:

# Decompression
decompress_data = zlib.decompress(open('test.raw', 'rb').read())
decompress_file = open('test.raw.temp', 'wb')
decompress_file.write(decompress_data)
decompress_file.close()

# Compression
compress_data = zlib.compress(open('test.raw.temp', 'rb').read())
compress_file = open('test.raw_', 'wb')
compress_file.write(compress_data)
compress_file.close()
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我解压缩test.raw并获取临时数据,反之亦然。

所以得到了压缩文件 -test.raw_但问题是它的大小与原始原始数据不同 - test.raw

当我更改压缩级别时,解压缩和压缩的大小保持不同。

星期四 hxd 编辑器我知道原始原始文件有默认的压缩标头 - 789C.

CMF |  FLG
0x78 | 0x01 - No Compression/low
0x78 | 0x9C - Default Compression
0x78 | 0xDA - Best Compression 
Run Code Online (Sandbox Code Playgroud)

由此看来,我认为最好的压缩级别是6. 它返回相同的标头,但大小仍然不同。

我在哪里取得了错误的进展?

请帮我。

Mar*_*ler 5

你没有问题。无法保证解压后压缩的结果会给您完全相同的结果。无损压缩的唯一保证是压缩解压会给你完全相同的东西。

获得您所期望的结果的唯一方法是,如果您使用完全相同的压缩代码、该代码的完全相同的版本以及为该代码提供的完全相同的参数,就像原始压缩的任何人或任何人所做的那样您从 PDF 中提取的数据。