探测图片类型

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

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

Python 探测图片文件类型的更多相关文章

  1. 网站图片挂马检测及PHP与python的图片文件恶意代码检测对比

    前言 周一一早网管收到来自阿里云的一堆警告,发现我们维护的一个网站下有数十个被挂马的文件.网管直接关了vsftpd,然后把警告导出邮件给我们. 取出部分大致如下: 服务器IP/名称 木马文件路径 更新 ...

  2. python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  3. CxImage动态加载图片(判断图片文件类型)

    1.打开一张图可以通过创建一个新的CxImage对象来完成,通过构造函数来打开一张图CxImage::CxImage(const char * filename, DWORD imagetype)其中 ...

  4. 关于Python获取图片文件二进制数据的问题(获取为空)

    在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...

  5. python 快速获取文件类型

  6. python 指定日期图片文件删除

    手机使用python操作图片文件 起因 前几天去国图拍了一本书,一本心理学方面的书,也许你问我为什么不去买一本,或者去网上找pdf. 其实吧,关于心理学方面的书可以说在市面上一抓就是一堆,至于拍这本书 ...

  7. linux 下查找图片文件方法

    通常是通过文件后缀名查找图片文件,如果没有文件后缀的图片或者伪造的图片文件,则这种判定方法将达不到要求.我们可以根据读取文件头进行图片文件类型的判定. 比较流行的图片文件类型有:jpg png bmp ...

  8. python筛选特定文件的信息按照格式输出到txt

    最近搞数据库,为了把图片文件的信息导入数据库表中,我开始研究python列出图片文件,其中发现因为IE临时文件里有非常多的不需要的图片,就需要筛选掉一些文件. 最终用python输出了所有需要的图片文 ...

  9. 【Python】解析Python中的文件操作

    目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...

随机推荐

  1. IDEA中git的配置与使用

    IDEA中git的配置与使用 1.介绍 git是目前非常流行的版本管理管理软件,因其具有分布式特点,越来越受到企业的欢迎.IDEA作为一款优秀的开发软件,其内部也提供了对git的支持. 2.下载并安装 ...

  2. 安装纯净 ubuntu linux (非虚拟机)

    //--------------- Chinese version --------------------------------------------------// 前提条件:有另一台电脑(w ...

  3. HTC vive VR设备软硬件安装+运行unity开发的VR程序

    总结在HTC vive VR开发过程中的HTC vive的安装调试 1.首先确保电脑的配置满足要求: 进入官网,测试电脑是否满足要求 链接:https://www.vive.com/us/produc ...

  4. Cmake 01

    1. sdsf(single direction single file) 1.1  The directory tree /* ./template | +--- build | +---main. ...

  5. VScode中的golang代码规范太严格,怎么处理。

    在vscode的配置文件settings.json中,加入下面的配置,一般设置为0.8即可. "go.lintFlags": [ "-min_confidence=.8& ...

  6. 【JavaScript 封装库】BETA 1.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  7. Breaking Biscuits(模板题-求凸边形的宽)

    Breaking Biscuits 时间限制: 1 Sec  内存限制: 128 MB  Special Judge提交: 70  解决: 26[提交] [状态] [讨论版] [命题人:admin] ...

  8. 机器学习实战之Logistic回归

    Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...

  9. 第23章 I2C—读写EEPROM—零死角玩转STM32-F429系列

    第23章     I2C—读写EEPROM 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  10. js图片库 案例

    事件处理函数:事件处理函数的作用是,在特定事件发生时调用特定的JavaScript代码.本例中想要在用户点击某个链接的时候触发一个动作,所以需要使用onclick事件处理函数. 添加事件处理函数的语法 ...