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统计文件行数示例分享
Feb 21 Python
Python FTP操作类代码分享
May 13 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
pytorch permute维度转换方法
Dec 14 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
Python3 实现串口两进程同时读写
Jun 12 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
python munch库的使用解析
May 25 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解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Python实现的简单模板引擎功能示例
2017/09/02 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
C语言基础笔试题
2013/04/27 面试题
产品销售员岗位职责
2013/12/18 职场文书
家长对老师的感言
2014/03/11 职场文书
国旗下的演讲稿
2014/05/08 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书