5

如何在没有任何外部库的情况下以跨平台方式猜测图像的 mime 类型?

4

3 回答 3

9

如果您事先知道您只需要处理有限数量的文件格式,您可以使用imghdr.what函数。

于 2013-02-01T12:28:10.303 回答
3

我检查了维基百科上流行的图像类型的格式,并尝试签名:

def guess_image_mime_type(f):
    '''
    Function guesses an image mime type.
    Supported filetypes are JPG, BMP, PNG.
    '''
    with open(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'
于 2013-02-01T11:03:07.183 回答
1

如果您可以依赖文件扩展名,则可以使用mimetypes.guess_type函数。请注意,您可能会在不同平台上得到不同的结果,但我仍将其称为跨平台。

于 2013-02-01T11:19:39.070 回答