问题描述
我从.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()
您会看到我解压缩了test.raw
并获得了临时数据,反之亦然。
因此得到了压缩文件-test.raw_
,但是问题在于原始文件的数据大小-test.raw
有所不同。
当我更改压缩级别时,解压缩后的大小保持不变。
星期四hxd编辑器,我知道原始原始文件具有默认压缩头-789C
。
CMF | FLG
0x78 | 0x01 - No Compression/low
0x78 | 0x9C - Default Compression
0x78 | 0xDA - Best Compression
因此,我认为最好的压缩级别是6
。它返回相同的标头,但大小仍然不同。
我在哪里取得了错误的进展?
请帮助我。
解决方法
您没有问题。无法保证解压缩后再压缩的结果将为您带来完全相同的效果。无损压缩的唯一保证是 compression 后跟 decompression 将为您提供完全一样的东西。
获得期望的唯一方法是,如果使用完全相同的压缩代码,该代码的完全相同的版本以及为该代码提供的完全相同的参数,那么无论由谁执行或执行任何操作,从PDF提取的数据的原始压缩。