2017-02-04 4 views
1

이미지를 다운로드하려고하는데 어떤 이유로 훼손됩니다. 예 : This is an image I want to get. 결과는 this입니다. 내 테스트 코드는 다음과 같습니다.Python과 함께 다운로드 한 이미지가 손상 되었습니까?

import urllib2 

def download_web_image(url): 
    request = urllib2.Request(url) 
    img = urllib2.urlopen(request).read() 
    with open ('test.jpg', 'w') as f: f.write(img) 

download_web_image("http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg") 

왜이 문제가 있으며 어떻게 해결합니까?

+1

바이너리 모드에서'test.jpg'를 열고 싶을 것입니다 :'open ('test.jpg', 'wb')' –

+0

@WanderNauta 고맙습니다. :) – StackHogger

+0

위대한! 나는 그것을 실제 답변으로 써 보겠습니다. –

답변

2

당신은 파이썬은 Windows에서 "올바른"줄 바꿈을 사용하게 기본 (텍스트) 모드에서 'test.jpg를'파일을 여는 : 텍스트 모드에서

때 독서가 인 디폴트 플랫폼 특정 줄 끝 (Unix에서는 \ n, Windows에서는 \ r \ n)을 \ n으로 변환하십시오. 텍스트 모드로 쓰는 경우, 기본값은 \ n의 출현을 플랫폼 특정 줄 끝으로 다시 변환하는 것입니다.

물론 JPEG 파일은 텍스트 파일이 아니며, '수정'을하면 개행 문자가 손상됩니다. 대신 파일을 이진 모드로 엽니 다.

with open('test.jpg', 'wb') as f: 
    f.write(img) 

자세한 내용은 documentation을 참조하십시오.

관련 문제