Python 探测图片文件类型
Table of Contents
探测图片类型
今天遇到一个小问题,如何探测图片的文件类型。总结如下:
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 探测图片文件类型的更多相关文章
- 网站图片挂马检测及PHP与python的图片文件恶意代码检测对比
前言 周一一早网管收到来自阿里云的一堆警告,发现我们维护的一个网站下有数十个被挂马的文件.网管直接关了vsftpd,然后把警告导出邮件给我们. 取出部分大致如下: 服务器IP/名称 木马文件路径 更新 ...
- python准确判断文件类型
判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...
- CxImage动态加载图片(判断图片文件类型)
1.打开一张图可以通过创建一个新的CxImage对象来完成,通过构造函数来打开一张图CxImage::CxImage(const char * filename, DWORD imagetype)其中 ...
- 关于Python获取图片文件二进制数据的问题(获取为空)
在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...
- python 快速获取文件类型
- python 指定日期图片文件删除
手机使用python操作图片文件 起因 前几天去国图拍了一本书,一本心理学方面的书,也许你问我为什么不去买一本,或者去网上找pdf. 其实吧,关于心理学方面的书可以说在市面上一抓就是一堆,至于拍这本书 ...
- linux 下查找图片文件方法
通常是通过文件后缀名查找图片文件,如果没有文件后缀的图片或者伪造的图片文件,则这种判定方法将达不到要求.我们可以根据读取文件头进行图片文件类型的判定. 比较流行的图片文件类型有:jpg png bmp ...
- python筛选特定文件的信息按照格式输出到txt
最近搞数据库,为了把图片文件的信息导入数据库表中,我开始研究python列出图片文件,其中发现因为IE临时文件里有非常多的不需要的图片,就需要筛选掉一些文件. 最终用python输出了所有需要的图片文 ...
- 【Python】解析Python中的文件操作
目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...
随机推荐
- ScrollView监听滑动到顶部和底部的方法
不需要监听滑动位置,只需要重写ScrollView的onOverScrolled和stopNestedScroll方法就可以了 public class ReadScrollView extends ...
- python模块详解 XML
XML模块 XML是实现不同语言或程序之间进行数据交换的协议,和json一样. XML格式: <?xml version="1.0" encoding="UTF-8 ...
- 关于 supersocket 不能通过Bootstrap 启动
App.config内容 <configSections> <section name="superSocket" type="SuperSocke ...
- vue-表单绑定
表单数据绑定1.1你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输 ...
- python pip安装报错python setup.py egg_info failed with error code 1
安装locust遇到点问题折腾了好一会儿,记录一下. 使用命令pip install locustio提示python setup.py egg_info failed with error cod ...
- Xcode 自定义控件创建及触发事件
#pragma mark 控制器的view加载完毕的时候调用 //一般在这里进行界面的初始化 - (void)viewDidLoad { [super viewDidLoad]; NSLog(@&qu ...
- ZOJ - 2112 Dynamic Rankings(BIT套主席树)
纠结了好久的一道题,以前是用线段树套平衡树二分做的,感觉时间复杂度和分块差不多了... 终于用BIT套函数式线段树了过了,120ms就是快,此题主要是卡内存. 假设离散后有ns个不同的值,递归层数是l ...
- ABI 管理
https://developer.android.google.cn/ndk/guides/abis.html 不同 Android 手机使用不同的 CPU,因此支持不同的指令集.CPU 与指令集的 ...
- Uva 10806 来回最短路,不重复,MCMF
题目链接:https://uva.onlinejudge.org/external/108/10806.pdf 题意:无向图,从1到n来回的最短路,不走重复路. 分析:可以考虑为1到n的流量为2时的最 ...
- 成绩累加排名,poj(2153)
题目链接:http://poj.org/problem?id=2153 解题报告: 注意map中的string,因此要将char[]转换为string型. #include <iostream& ...