Python中哪种压缩方法具有最佳压缩率?
常用的zlib.compress()
是最好的还是有更好的选择?我需要获得最佳的压缩比。
我正在压缩字符串并通过UDP发送它们。我压缩的典型字符串大约有1,700,000个字节。
答案 0 :(得分:7)
我确信可能会有一些更加模糊的格式和更好的压缩,但lzma是最好的,在那些得到很好支持的情况下。有一些python绑定here。
修改强>
如果没有测试,请不要选择格式,根据数据集,某些算法会做得更好。
答案 1 :(得分:4)
如果您愿意为getter压缩交换性能,那么bz2库通常会提供比gz(zlib)库更好的结果。
还有其他压缩库,如xz(LZMA2)可能会提供更好的结果,但它们似乎不在python的核心发行版中。
编辑:根据图片类型,您可能无法获得额外的压缩。之前压缩了许多图像格式,除非它是raw,bmp或uncompressed tiff。强烈建议在各种压缩类型之间进行测试。
EDIT2:如果您决定进行图像压缩。 Image Magick支持python绑定和许多图像转换类型。
答案 2 :(得分:1)
最佳压缩算法肯定取决于您正在处理的数据类型。除非您正在处理存储为字符串的随机数列表(在这种情况下没有压缩算法将起作用),知道数据类型通常允许应用比通用数据更好的算法(请参阅其他答案可以很好地使用通用压缩算法。)
如果您正在处理图像,您最好选择有损压缩格式(即:像素识别),最好选择任何无损格式。这会给你更好的结果。使用无损格式对有损格式进行重新压缩是一种时间的浪费。
我会搜索PIL以查看我可以使用的内容。在发送之前将图像转换为jpeg,其压缩比与研究质量相符应该非常有效。
如果使用UDP,你也应该非常谨慎,它可能会丢失一些数据包,并且大多数压缩格式对于丢失文件部分非常敏感。好。这可以在应用程序级别进行管理。