2015-01-22 5 views
0

webp 형식인지 여부를 알기 위해 이미지 유형을 식별하고 싶지만 이미지가 메모리에 바이너리로 저장 되었기 때문에 file 명령을 사용할 수 없습니다. 인터넷에서 다운로드하십시오. 지금까지 내가 PIL LIB 또는 imghdr LIB 여기파이썬으로 웹 이미지 유형을 식별하는 방법

에서이 작업을 수행하기 위해 어떤 방법을 내가 할 wan't 무엇을 찾을 수 없습니다 :

from PIL import Image 
import imghdr 

image_type = imghdr.what("test.webp") 

if not image_type: 
    print "err" 
else: 
    print image_type 

# if the image is **webp** then I will convert it to 
# "jpeg", else I won't bother to do the converting job 
# because rerendering a image with JPG will cause information loss. 

im = Image.open("test.webp").convert("RGB") 
im.save("test.jpg","jpeg") 

을 그리고이 "test.webp" 실제로 webp 이미지 인 경우, var image_typeNone이며 imghdr lib는 webp 유형을 알지 못한다는 것을 나타내므로 어떤 식 으로든 webp 이미지가 파이썬과 관련되어 있다고 말할 수 있습니까? 기록을 위해


, 나는 imghdr 모듈은 아직 WebP 형식의 이미지 검색을 지원하지 않습니다


+0

예,이 결론이었다 후, 나는'webp' 이미지를 식별 할 수있는 방법과 함께,이 알고 wan't 또는'imghdr' 또는'PIL'없이? – armnotstrong

+0

webp가 아닌 .webp 확장자를 가진 파일이 있습니까? –

+0

@PadraicCunningham 그렇습니다. 파일이 인터넷에서 직접 다운로드 되었기 때문에 파일 이름 확장자가 신뢰할 수 없으며 'content-type'도 신뢰할 수 없습니다. 파일이 'webp'인지 여부를 판단하는 유일한 방법은 이진 구조에 따라 결정되는 유일한 방법입니다.이 문제를 해결할 수있는 좋은 방법이 있습니다. – armnotstrong

답변

1

을 파이썬 2.7을 사용하고 있습니다; added to Python 3.5이되어야한다. 오래된 파이썬 버전을에서 추가

충분히 쉽게 : 내 질문에

import imghdr 

try: 
    imghdr.test_webp 
except AttributeError: 
    # add in webp test, see http://bugs.python.org/issue20197 
    def test_webp(h, f): 
     if h.startswith(b'RIFF') and h[8:12] == b'WEBP': 
      return 'webp' 

    imghdr.tests.append(test_webp) 
+0

가 록 응답 인 것 같습니다. – armnotstrong

+0

작동합니다. 감사합니다. – armnotstrong