2013-06-02 3 views
1

좋아, 그래서 내가 는, 압축 된 파일이하는을 해제 압축 할 파일을 볼 수있는 전에 압축 저장 (참고, 가능한 한 많은 이미지 파일을 시도하고있다 사용할 수 필요가 없습니다, 그냥 내가 파이썬에서이 작업을 수행하고자하는)-않은 압축 될 수 있어야하고, 다음과 같이 내가 코드를 가지고 :파이썬 파일 압축

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 

을 지금까지이 압축 않습니다 이미지 다운,하지만 MB의 약 1/3 정도만 압축 파일을 압축하여 생각했습니다. 더 이상 압축 할 수 없지만, 이렇게하면 FINAL.JPG 파일이 내 첫 압축 파일보다 큽니다. 그래서 내 질문은 : 파일을 압축하는 가장 좋은 방법은 무엇입니까 (나는 다른 파일 형식이 약간 다른 압축이 필요하다는 것을 알고, 최종 목적은 MP3 오디오 파일을 압축하는 것입니다) 왜 압축 파일이 커지면 더 커지 는가? 두 번째로 압축 하시겠습니까?, 압축을 해제 할 수 없게되기 전에이 파일 중 하나를 얼마나 작게 만들 수 있습니까?

미리 도움을 요청 해 주셔서 감사합니다.

+0

압축에 대한 제 독서에서 생각한 것처럼, 메모리 청킹을 사용하는 것이 가장 효율적이지 않습니까? 나는 그걸 가지고 일한 적이 없지만, 내가 익숙해야만하는 것으로 짐작하고있다. –

답변

4

JPEG 이미지 파일과 MP3 오디오 파일은 이미 압축되어 있습니다. 압축되지 않은 형식으로 저장된 일부 메타 데이터 (예 : JPEG 이미지의 EXIF ​​태그) 외에도 압축 알고리즘은 이러한 유형의 파일을 거의 또는 전혀 만들지 않습니다.

압축 알고리즘은 일반적이지 않다는 점을 명심하십시오. 파일에서 패턴을 찾아보다 효과적인 방식으로 인코딩하여 작동합니다. 파일이 이미 압축되어 있으면 압축 알고리즘이 작동 할 수있는 패턴이 포함되지 않으므로 더 작은 출력 파일을 생성 할 수 없습니다.

+0

나는 그것에 대해 궁금해하고 있었다. 이것은 MP3 파일을보다 효율적으로 저장할 수있는 방법이 없거나 적어도 큰 차이를 만들 정도로 충분하지 않다는 뜻입니까? 또한 MP3보다 멀리 압축 될 수있는 오디오 파일의 다른 형태가 있습니까? 아니면 파일을 영구적으로 손상시키지 않고 가장 낮은 압축 형식의 MP3입니까? 추신 모든 도움에 감사드립니다! –

+0

중요하지 않을만큼 충분하지 않습니다. MP3 파일의 대량 데이터는 이미 허프만 코딩되어 있습니다. – duskwuff

+0

Amarok.mp3 (하나의 60 분 길이의 노래 인 앨범)을 bz2보다 압축률이 높은 xz로 압축했지만 그 결과는 0.5 % 만 절약되었습니다. 이미 압축 된 파일을 압축하고 매번 생산성을 발휘할 수 있다면 결국에는 모든 것을 아무것도 압축하지 않을 것입니다. 그러나 압축되지 않은 wav 파일로 시작하면 xz로 압축해야합니다. 아마도 내장 된 mp3 압축보다 작을 수 있습니다. – dstromberg