资讯专栏INFORMATION COLUMN

Python 探测图片文件类型

U2FsdGVkX1x / 2959人阅读

摘要:探测图片类型今天遇到一个小问题,如何探测图片的文件类型。总结如下模块的地址在这,可以用来方便地探测文件类型,使用示例如下,可以方便地探测一个文件或是字节流文件。提供的标准库可以用来确定图片的类型,参见这里。如下接受文件名作为参数。

探测图片类型

今天遇到一个小问题,如何探测图片的文件类型。总结如下:

python magic

magic 模块的github地址在这, 可以用来方便地探测文件类型,使用示例如下,可以方便地探测一个文件或是字节流文件。

>>> 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"
imghdr

python提供的标准库 imghdr 可以用来确定图片的类型,参见这里。
API如下:

imghdr.what(filename[, h])
# 接受文件名作为参数。如果提供了字节流作为第二个参数,那么第一个文件名参数会被忽略,从而探测字节流的图片类型

简单的例子如下:

>>> import imghdr
>>> imghdr.what("bass.gif")
"gif"

可能的返回类型如下:

"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

PIL.Image

使用PIL也可以检测图片类型,例子如下:

from PIL import Image

img = Image.open(filename)
print(img.format)  # "JPEG"

而且可以用 PIL 方便地转化图片格式,它会自动检测后缀以合适的格式保存:

import Image
im = Image.open("test.jpg")
im.save("test.tiff")  # or "test.tif"

# 或者手动指定格式
import Image
im = Image.open("file.png")
im.save("file.jpg", "JPEG")

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44292.html

相关文章

  • SSRF漏洞梳理

    摘要:请求从内部发起,所以漏洞攻击的目标一般是外网无法访问的内部系统。攻击方式内部服务资产探测可以直接探测网站所在服务器端口的开放情况甚至内网资产情况,如确定该处存在漏洞,则可以通过确定请求成功与失败的返回信息进行判断服务开放情况。 ...

    CoffeX 评论0 收藏0
  • Web安全之服务端请求伪造漏洞

    摘要:服务端请求伪造漏洞,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一种漏洞。举例攻击者传入一个未经验证的,后端代码直接请求这个,就会造成漏洞。禁止不常用的协议仅仅允许和请求。 ...

    Fundebug 评论0 收藏0
  • 厉害了,利用深度学习开发老板探测

    摘要:整个工程中应用了深度学习框架来建立识别人脸的神经网络,和一个网络摄像头用来捕捉老板的人脸。所以,我用和编写了一段裁剪人脸图像的脚本,代码在这里下载偷拍到的人脸图像比我之前设想的更清楚识别人脸图像接下来,要用机器学习教会电脑识别老板的脸。 深度学习如果上班的时候想放松一下,或者直说想偷偷懒,看点和工作无关的网页,这时候万一老板突然出现在背后,会不会感到很难堪呢?有的浏览器设置了boss按键,手...

    YacaToy 评论0 收藏0
  • 中文维基百科文本数据获取与预处理

    摘要:下载数据方法使用官方的数据最新打包的中文文档下载地址是。中文维基数据繁简混杂大家都说存在这个问题,但的网站是将繁体中文和简体中文分开处理的,所以一直觉得从数据库到结构都应有方法将两者区分开,暂罢,待有空研究其数据时再议。 照例,先讲下环境,Mac OSX 10.11.2 ,Python 3.4.3。 下载数据 方法1:使用官方dump的xml数据 最新打包的中文文档下载地址是:http...

    loostudy 评论0 收藏0
  • Python安全攻防:渗透测试实战指南》学习一

    摘要:白盒测试是指在拥有客户组织所有的资产信息的情况下进行渗透测试。信息分析对搜集到的信息进行分析,为下一步实施渗透测试做准备。形成报告按照与客户确定好的范围需求整理渗透测试结果并将资料形成报告。 第1章 渗透测试概述  1.信息安全发展史  2.信息安全行业的现状         2.1渗透测试...

    Baoyuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<