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实现的简单hangman游戏实例
Jun 28 Python
Python实现学生成绩管理系统
Apr 05 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python语言进阶知识点总结
May 28 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
python实现学生通讯录管理系统
Feb 25 Python
Python实现滑雪小游戏
Sep 25 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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 文件扩展名 获取函数
2009/06/03 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
几种响应式文字详解
2017/05/19 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
PyMongo安装使用笔记
2015/04/27 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
在Python中使用成员运算符的示例
2015/05/13 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
Django实现分页功能
2018/07/02 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
委托书范本
2014/04/02 职场文书
《老山界》教学反思
2014/04/08 职场文书
师德师风承诺书
2014/05/23 职场文书
文明班集体申报材料
2014/05/23 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
医学检验专业自荐信
2014/09/18 职场文书
警示教育片观后感
2015/06/17 职场文书
Python 键盘事件详解
2021/11/11 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
MySQL中order by的执行过程
2022/06/05 MySQL