2014-06-20 3 views

답변

0

이 파일의 데이터를 가지고 있다면, 당신은 마법의 숫자 signiture의 처음 몇 바이트 확인할 수 있습니다 :

  • PNG 89 50 4E 47 0D 0A 1A는 0A을
  • JPG FF D8 FF
  • BMP 42 4D
  • GIF 47 49 46 38 예

, Python3.x :

with open('image', 'rb') as f: 
    bytes = f.read() 
    if bytes.startswith(b'89504E470D0A1A0A'): 
    print('PNG') 
    if bytes.startswith(b'FFD8FF'): 
    print('JPG') 
    if bytes.startswith(b'424D'): 
    print('BMP') 
    if bytes.startswith(b'47494638'): 
    print('GIF') 
+1

Uhh 아니, 그 코드는 작동하지 않습니다 ... –

+0

Ty, @OlehPrypin 고정, 바이트 문자열 다음에 빠진 것 –

2

다운로드하기 전에 웹 서버 자체의 파일 유형을 확인하려면 Content-Type 헤더를 확인할 수 있습니다.

파이썬 2.x는 예를

import urllib2 
my_url = "http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png" #example image 
request = urllib2.urlopen(my_url) 
mime = request.info()['Content-type'] 

if mime.endswith("png"): 
    print("Image is a png") 
elif mime.endswith("jpeg"): 
    print("Image is a jpg") 
elif mime.endswith("gif"): 
    print("Image is a gif") 

#Image is a png 

List of image mimes you can easily check against

1

당신은 이미지의 유형을 결정 (파이썬 표준 라이브러리에 포함)를 imghdr 라이브러리를 사용할 수 있습니다.

import cStringIO 
import imghdr 
import urllib2 

url = "http://www.gnu.org/graphics/gerwinski-gnu-head.png" 
response = urllib2.urlopen(url) 
data = cStringIO.StringIO(response.read()) 
print(imghdr.what(data))