How To Guess Image Mime Type?
How can I guess an image's mime type, in a cross-platform manner, and without any external libraries?
Solution 1:
If you know in advance that you only need to handle a limited number of file formats you can use the imghdr.what function.
Solution 2:
I've checked the popular image types' format on wikipedia, and tried to make a signature:
defguess_image_mime_type(f):
'''
Function guesses an image mime type.
Supported filetypes are JPG, BMP, PNG.
'''withopen(f, 'rb') as f:
data = f.read(11)
if data[:4] == '\xff\xd8\xff\xe0'and data[6:] == 'JFIF\0':
return'image/jpeg'elif data[1:4] == "PNG":
return'image/png'elif data[:2] == "BM":
return'image/x-ms-bmp'else:
return'image/unknown-type'
Solution 3:
If you can rely on the file extension you can use the mimetypes.guess_type function. Note that you may get different results on different platforms, but I would still call it cross-platform.
Post a Comment for "How To Guess Image Mime Type?"