怎么检测一个文件是正确的图片文件

经常需要用户上传图片,怎么判断用户上传的文件是正确的图片而不是修改后缀的文件呢?用PIL,imghdr还是其他呢?

1. 使用PIL判断图片类型

import Image
try:
    im=Image.open(filename)
    # do stuff
except IOError:
    # filename not an image file

适应大部分常见图片,但xcf, svg或psd就不能处理

2. 使用imghdr判断是否是图片类型

如果检查到是下面表格内的格式,就返回相对应的值,否则返回是空。

import imghdr
imghdr.what('pythonxyz.gif')

# 输出
# 'gif'

源码见 imghdr.py

Value Image format
'rgb' SGI ImgLib Files
'gif' GIF 87a and 89a Files
'pbm' Portable Bitmap Files
'pgm' Portable Graymap Files
'ppm' Portable Pixmap Files
'tiff' TIFF Files
'rast' Sun Raster Files
'xbm' X Bitmap Files
'jpeg' JPEG data in JFIF or Exif formats
'bmp' BMP files
'png' Portable Network Graphics

3. 用python-magic判断是否是图片类型

python-magic 是 libmagic 库的 Python 语言封装,实现魔术棒的文件类型识别。

安装

# pip
pip install python-magic

# On OSX
brew install libmagic

示例代码:

>>> import magic
>>> magic.from_file("testdata/test.pdf")
'PDF document, version 1.2'
>>> magic.from_buffer(open("testdata/test.pdf").read(1024))
'PDF document, version 1.2'
>>> magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'

Github地址 python-magic



评论(0条)

暂时还没有评论,第一个来评论吧!


我要发表看法

引用   粗体   链接   缩进  

最近编辑

热门标签