【问题标题】:Python File CompressionPython 文件压缩
【发布时间】:2013-06-02 18:26:30
【问题描述】:

好的,所以我正在尝试压缩一个图像文件尽可能多地进行存储(注意,在能够查看该文件之前,我会un -compress 它,压缩文件不需要可用,它只需要能够解压缩)我想在 python 中执行此操作,并且我有代码如下:

import bz2
from shutil import copyfileobj

x = 0


while True:
    while x == 0:
        with open("START.JPG", 'rb') as input:
            with bz2.BZ2File("END.JPG", 'wb', compresslevel=9) as output:
                copyfileobj(input, output)

                print ("STAGE ONE COMPLETE")
                x = 1

    while x == 1:
        with open("END.JPG", 'rb') as input:
            with bz2.BZ2File("FINAL.JPG", 'wb', compresslevel=9) as output1:
                copyfileobj(input, output1)

                print ("STAGE TWO COMPLETE")
                x = 2

到目前为止,它确实将图像压缩了大约 1/3 MB,我认为通过压缩压缩文件我可以将其压缩得更远,但是当我这样做时 FINAL.JPG 文件比我的第一个压缩文件大。所以我的问题是:压缩文件的最佳方法是什么(我知道不同的文件类型需要稍微不同的压缩,我的最终目标是压缩 MP3 音频文件),为什么当我压缩文件时我的压缩文件变大了?再次压缩它?,在这些文件之一无法解压缩之前,我还能制作多小?

提前感谢您提供的所有帮助,我相信我会得到!

【问题讨论】:

  • 只是我阅读压缩的一个想法,使用内存分块不是最有效的吗?我从未使用过它,但我猜这是我应该熟悉的东西。

标签: python image audio python-2.7 compression


【解决方案1】:

JPEG 图像文件和 MP3 音频文件已被压缩。除了以未压缩格式存储的一些元数据(例如 JPEG 图像上的 EXIF 标签)之外,压缩算法对这些类型的文件几乎没有任何进展。

请记住,压缩算法并不神奇 - 概括地说,它们通过在文件中查找模式并以更有效的方式对这些模式进行编码来工作。如果一个文件已经被压缩,它将不包含任何压缩算法可以使用的模式,因此它将无法生成更小的输出文件。

【讨论】:

  • 我想知道这一点。这是否意味着无法更有效地存储 MP3 文件,或者至少不足以产生重大影响?还有任何其他形式的音频文件可以比 MP3 压缩得更远,或者 MP3 是最低的压缩形式,而不会永久损坏文件?附言感谢您的所有帮助!
  • 不够重要。 MP3 文件中的大部分数据已经被 Huffman 编码。
  • 我用 xz 压缩了 Amarok.mp3(一张 60 分钟长的歌曲的专辑),它的压缩比 bz2 更难,但结果只节省了 0.5%。如果您可以压缩一个已经压缩的文件并且每次都高效,那么最终您会将所有内容压缩到零。但是如果你从一个未压缩的 wav 文件开始,它应该用 xz 很好地压缩 - 可能比内置的 mp3 压缩要小。
  • 谢谢,这对我很有教育意义,但是我还有几个问题。视频文件(例如 MP4 或 .FLV 是否能够被压缩,以及将其压缩成的理想文件类型是什么?出于好奇,您个人会说什么是最聪明的压缩文件?一台电脑(或安卓手机)来节省硬盘空间?我知道这有很多问题,我想你非常感谢你的帮助和支持!
  • 视频文件也已经被压缩了。如果您想尝试压缩您可能会坐在身边的东西,请尝试使用 BMP 图像文件或 EXE/DLL 可执行文件。
猜你喜欢
  • 2023-03-18
  • 2011-09-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多