Python读取图片EXIF信息类库介绍和使用实例


Posted in Python onJuly 10, 2014

首先要介绍的是 Python Imaging Library,使用方法如下:

from PIL import Image

from PIL.ExifTags import TAGS
def get_exif_data(fname):

    """Get embedded EXIF data from image file."""

    ret = {}

    try:

        img = Image.open(fname)

        if hasattr( img, '_getexif' ):

            exifinfo = img._getexif()

            if exifinfo != None:

                for tag, value in exifinfo.items():

                    decoded = TAGS.get(tag, tag)

                    ret[decoded] = value

    except IOError:

        print 'IOERROR ' + fname

    return ret
if __name__ == '__main__':

    fileName = 'C:/Users/Leyond/Desktop/IMG_20121122_153514.jpg'

    exif = get_exif_data(fileName)

    print exif

返回的清单如下:

ExifVersion

ComponentsConfiguration

ExifImageWidth

DateTimeOriginal

DateTimeDigitized

ExifInteroperabilityOffset

FlashPixVersion

MeteringMode

LightSource

Flash

FocalLength

41986

ImageDescription

Make

Model

Orientation

YCbCrPositioning

41988

XResolution

YResolution

59932

ExposureTime

ExposureProgram

ColorSpace

41990

ISOSpeedRatings

ResolutionUnit

41987

FNumber

Software

DateTime

ExifImageHeight

ExifOffset

其中59932,是一大串十六进制的字符,不知为啥。除了PIL之外,还有许多类库可供使用:

Media Metadata for Python

EXIF.py

Python Exif Parser

A Blogger's Exif Parser

pyexiv2

接着看EXIF.PY,使用方法非常简单:exif.py IMG_20121122_153514.jpg

EXIF ColorSpace (Short): sRGB

EXIF ComponentsConfiguration (Undefined): YCbCr

EXIF DateTimeDigitized (ASCII): 2012:11:22 15:35:14

EXIF DateTimeOriginal (ASCII): 2012:11:22 15:35:14

EXIF DigitalZoomRatio (Ratio): 1

EXIF ExifImageLength (Long): 2560

EXIF ExifImageWidth (Long): 1920

EXIF ExifVersion (Undefined): 0220

EXIF ExposureBiasValue (Signed Ratio): 0

EXIF ExposureMode (Short): Auto Exposure

EXIF ExposureProgram (Short): Portrait Mode

EXIF ExposureTime (Ratio): 1/256

EXIF FNumber (Ratio): 14/5

EXIF Flash (Short): Flash did not fire

EXIF FlashPixVersion (Undefined): 0100

EXIF FocalLength (Ratio): 35

EXIF ISOSpeedRatings (Short): 56

EXIF InteroperabilityOffset (Long): 4810

EXIF LightSource (Short): other light source

EXIF MeteringMode (Short): CenterWeightedAverage

EXIF Padding (Undefined): []

EXIF SceneCaptureType (Short): Portrait

EXIF WhiteBalance (Short): Auto

Image DateTime (ASCII): 2012:11:24 09:44:50

Image ExifOffset (Long): 2396

Image ImageDescription (ASCII):

Image Make (ASCII):

Image Model (ASCII):

Image Orientation (Short): Horizontal (normal)

Image Padding (Undefined): []

Image ResolutionUnit (Short): Pixels/Inch

Image Software (ASCII): Microsoft Windows Photo Viewer 6.1.7600.16385

Image XResolution (Ratio): 72

Image YCbCrPositioning (Short): Co-sited

Image YResolution (Ratio): 72

Thumbnail Compression (Short): JPEG (old-style)

Thumbnail JPEGInterchangeFormat (Long): 4970

Thumbnail JPEGInterchangeFormatLength (Long): 3883

Thumbnail Orientation (Short): Horizontal (normal)

Thumbnail ResolutionUnit (Short): Pixels/Inch

Thumbnail XResolution (Ratio): 72

Thumbnail YCbCrPositioning (Short): Co-sited

Thumbnail YResolution (Ratio): 72

至于Python Exif Parser,好像没更新很久了,使用方法也很类似:

import exif

photo_path = "somePath\to\a\photo.jpg"

data = exif.parse(photo_path)

其他类库请自行研究。

Python 相关文章推荐
Python2.x中文乱码问题解决方法
Jun 02 Python
Python实现telnet服务器的方法
Jul 10 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python下10个简单实例代码
Nov 15 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
python 实现UTC时间加减的方法
Dec 31 Python
Python多线程原理与用法实例剖析
Jan 22 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
python 的topk算法实例
Apr 02 Python
python如何利用Mitmproxy抓包
Oct 10 Python
Python采集腾讯新闻实例
Jul 10 #Python
使用wxpython实现的一个简单图片浏览器实例
Jul 10 #Python
Python语言的12个基础知识点小结
Jul 10 #Python
使用Python获取Linux系统的各种信息
Jul 10 #Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 #Python
python实现的登录和操作开心网脚本分享
Jul 09 #Python
python实现的一个火车票转让信息采集器
Jul 09 #Python
You might like
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
常用简易JavaScript函数
2009/04/09 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
python操作xml文件详细介绍
2014/06/09 Python
python实现端口转发器的方法
2015/03/13 Python
python生成验证码图片代码分享
2016/01/28 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
python构建深度神经网络(续)
2018/03/10 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
Python partial函数原理及用法解析
2019/12/11 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
python的链表基础知识点
2020/09/13 Python
学校安全工作制度
2014/01/19 职场文书
幼儿教师工作感言
2014/02/14 职场文书
商铺门面租房协议书
2014/10/21 职场文书
付款承诺函范文
2015/01/21 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书