python 中的一个实用的库 imghdr, 用于探测图片格式
之前没有注意到,图片格式竟然有这么多种;
'rgb' SGI 图像库文件'gif' GIF 87a 和 89a 文件'pbm' 便携式位图文件'pgm' 便携式灰度图文件'ppm' 便携式像素表文件'tiff' TIFF 文件'rast' Sun 光栅文件'xbm' X 位图文件'jpeg' JFIF 或 Exif 格式的 JPEG 数据'bmp' BMP 文件'png' 便携式网络图像 webp' WebP 文件'exr' OpenEXR 文件
其中最常见的是 png 和 jpeg 了,通常都是通过文件名后缀来判断图片格式,但是都知道,这个后缀可以随意更改,不太准;
python 内置了一个检测图片格式的库:
imghdr
imghdr 是一个用来检测图片类型的模块,提供了一个 api 叫做
imghdr.what
传递给它的可以是一个文件对象,也可以是一个字节流; 然后防护一个图片格式;
参考 imghdr 的源码发现,其对图片做了一次遍历检测,看最终匹配到哪个结果;
简单使用;
imgdr 是内置库,所以不需要安装,直接导入即可
import imghdr
imghdr.what()可以接收一个文件路径,也可以接收一个文件对象。输出一个文件类型
代码参考如下:
以上代码实用性不强,但是如果给 imghdr,what 的是一个 url 地址,然返回一个文件类型。就很有用途,比如在爬虫下载文件的时候,图片是一个 gif 类型,下载的时候保存成 png 或 jpg 文件,就不对了;
例如这个地址是一个百度图片地址, https://t7.baidu.com/it/u=2511982910,2454873241&fm=193&f=GIF 从地址上看不出文件类型,保存时就不知道后缀是啥了;
如果可以知道文件类型,在下载时就可以指定文件后缀名称;不至于将 gif 保存成 png;
代码如下:
因为要请求图片,需要用到 requests 这个库;
requests 是一个很实用的 Python HTTP 客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests 是 Python 语言的第三方的库,专门用于发送 HTTP 请求
安装方式推荐使用 pip
pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。
安装 requests 命令如下:
pip install requests
库比较简单,等待安装完成即可;
运行代码,检测图片类型;
版权声明: 本文为 InfoQ 作者【技能实验室】的原创文章。
原文链接:【http://xie.infoq.cn/article/3a35f7ca88cb9318b8cffc823】。文章转载请联系作者。
评论