我使用的是一个简单而正确的LZW压缩程序,我发现对于一些.gif和.bmp文件,该程序会为原始文件输出更大的文件。有人能解释一下是什么因素导致了这种结果吗?
我认为原始文件太随意了,但我不确定如何显示。
这不是一个失败。如果程序不是无损的,那将是一个失败。
数学上有必要的是,如果一些序列被无损压缩,那么一定存在一些被无损扩展的序列。
至于为什么您的特定序列是扩展的而不是压缩的,这只是因为该序列没有足够的冗余供LZW利用。与更现代的算法相比,LZW是一种过时且相对无效的压缩算法。("更现代"可能意味着30岁而不是40岁。(
LZW也是许多不可压缩数据扩展最差的数据之一。您可以考虑在结果前加一位,指示后续数据是否压缩。那么你就不会受到LZW膨胀比的影响。
您可以使用其他压缩算法,例如那些在gzip和xz中实现的算法,来了解数据的内在可压缩性