puush.me 이미지 (링크가 HTML이 아니고 이미지 만)가 png, jpg 또는 gif인지 확인하고 싶습니다. 거기에 파이썬을 할 수있는 방법이 있습니까? Urllib은 이미지를 열고 감지하지 않는 것 같습니다.URL을 통해 그림을 열고 파이썬에서 png, jpg 또는 gif인지 확인하십시오.
0
A
답변
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
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))
'Content-Type' 헤더는 어떻게됩니까? – yedpodtrzitko