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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python3处理文件中每个词的方法
May 22 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
使用python实现knn算法
Dec 20 Python
python实现字符串加密成纯数字
Mar 19 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python函数定义和调用过程详解
Feb 09 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
Python+tkinter实现高清图片保存
Mar 13 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python+django实现简单的文件上传
2016/08/17 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
幼儿园教师工作感言
2014/02/15 职场文书
家庭教育的心得体会
2014/09/01 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
高中英语教学反思范文
2016/03/02 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js