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 相关文章推荐
简单讲解Python中的闭包
Aug 11 Python
python Django批量导入数据
Mar 25 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
Python装饰器语法糖
Jan 02 Python
Python基本socket通信控制操作示例
Jan 30 Python
我就是这样学习Python中的列表
Jun 02 Python
关于python 跨域处理方式详解
Mar 28 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
Django开发RESTful API实现增删改查(入门级)
May 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
php在数组中查找指定值的方法
2015/03/17 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
vue实现图片上传功能
2020/05/28 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
图文详解WinPE下安装Python
2016/05/17 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
数控加工专业毕业生自荐信
2013/09/27 职场文书
应届生法律顾问求职信
2013/11/19 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
应用外语系自荐信
2014/06/26 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
GO中sync包自由控制并发示例详解
2022/08/05 Golang