2017-03-27 17 views
0

저는 파이썬에서 요청 라이브러리를 사용하여 http를 사용하여 이미지 파일을 다운로드합니다. 파이썬에서 BytesIO를 사용하여 수신 된 컨텐트를 raw 바이트로 변환 한 다음 Pillow()를 사용하여이 원시 컨텐트를 jpeg 파일로 저장합니다.다운 로더에서 MIME 형식을 처리하는 올바른 방법

from PIL import Image 
from io import BytesIO 

rsp = requests.get(imageurl) 
content_type_received = rsp.headers['Content-Type'] # mime type 
binarycontent = BytesIO(rsp.content) 
if content_type_received.startswith('image'): # image/jpeg, image/png etc 
    i = Image.open(binarycontent) 
    outfilename = os.path.join(outfolder,'myimg'+'.jpg') 
    with open(outfilename, 'wb') as f: 
     f.write(rsp.content) 
    rsp.close() 

위의 코드에서 나는 MIME 유형에 관계없이 jpg로 강제 변환하고 있습니다. 이것은 내게 기발한 것처럼 보이지 않습니다. Python이나 Pillow 라이브러리에서 MIME 하위 유형 image/png, image/gif 등을 처리하는 표준 방법이 있습니까?

답변

0

이 라이브러리 Python Magic을 사용하면 MIME 형식을 해석하기 위해 파일 헤더를 검사 할 수 있습니다.

편집 : 콘텐츠 형식 (일반적으로 사용해서는 안 됨)을 신뢰하는 경우이를 사용하여 파일 이름을 지정하십시오. 이미지 타입을 조사하기 위해 파이썬 매직을 사용하지 않는다면 그것을 사용하십시오. 저장 한 파일은 전송 된 형식으로 변환되지 않습니다.

+0

png, jpeg 등이 될 수있는 python 요청을 통해받은 이미지를 저장하려고합니다.이 방법으로 변환하지 말아야한다고 생각합니다. – hAcKnRoCk

+0

네이티브 형식으로 저장 하시겠습니까? – pypypy

+0

예. 소스와 같은 형식으로 저장하고 싶습니다 – hAcKnRoCk