一、什么是EXIF?

EXIF信息,是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。EXIF最初由日本电子工业发展协会在1996年制定,版本为1.0。1998年,升级到2.1,增加了对音频文件的支持。2002年3月,发表了2.2版。EXIF可以附加于JPEG、TIFF、RIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。

二、标识

所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。文件头中有一系列“0xFF??”格式的字符串,称为“标识”,用来标记JPEG文件的信息段。其中,0xFFE0 -- 0xFFEF之间的标识符称为“应用标记”,没有被常规JPEG文件利用,Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全球定位信息。按照Exif2.1标准对这些标识符的定义,数码相机可以把各种拍摄信息记入数码图像中,应用软件可以读取这些数据,再按照Exif2.1标准,检索出它们的具体含义,一般而言包括以下一些信息:

Image Description # 图像描述、来源,指生成图像的工具
Artist # 作者,有些相机可以输入使用者的名字
Make # 生产者,指产品生产厂家
Model # 型号,指设备型号
Orientation # 方向,有的相机支持,有的不支持
XResolution/YResolution # X/Y方向分辨率
Resolution Unit # 分辨率单位,一般为PPI
Software # 软件,显示固件Firmware版本
Date Time # 日期和时间
YCbCrPositioning # 色相定位
Exif Offset Exif # 信息位置,定义Exif在信息在文件中的写入,有些软件不显示
Exposure Time # 曝光时间,即快门速度
F Number  # 光圈系数
Exposure Program # 曝光程序,指程序式自动曝光的设置,各相机不同,可能是Shutter Priority(快门优先,Tv)、Aperture Priority(光圈优先,Av)等等。
ISO speed ratings  # 感光度
Exif Version Exif  # 版本
DateTime Original # 创建时间
DateTime Digitized # 数字化时间
Components Configuration # 图像构造(多指色彩组合方案)
Compressed Bits per Pixel(BPP) # 压缩时每像素色彩位,指压缩程度
Exposure Bias Value # 曝光补偿
Max Aperture Value # 最大光圈
Metering Mode # 测光方式、平均式测光、中央重点测光、点测光等。
Light source # 光源,指白平衡设置
Flash # 是否使用闪光灯
Focal Length # 焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距
Maker Note (User Comment) # 作者标记、说明、记录
Flash Pix Version Flash Pix # 版本(个别机型支持)
Color Space # 色域、色彩空间
ExifImage Width (Pixel X Dimension) # 图像宽度,指横向像素数
ExifImage Length (Pixel Y Dimension) # 图像高度,指纵向像素数
Interoperability IFD # 通用性扩展项定义指针和TIFF文件相关,具体含义不详
File Source # 源文件
Compression # 压缩比
等等

三、如何获取图片的EXIF信息

通过PIL库即可实现这个功能:

import pprint
from PIL import Image
from PIL.ExifTags import TAGS# 从图像中获取内置的EXIF数据
def get_exif_data(fname):ret = {}try:img = Image.open(fname)if hasattr(img, '_getexif'):exifinfo = img._getexif()if exifinfo != None:for tag, value in exifinfo.items():decode = TAGS.get(tag, tag)ret[decode] = valueexcept IOError:print('IOError' + fname)return retif __name__ == '__main__':file = '/home/dulingwen/Downloads/test_image/134592100021557899975799.jpg'exif = get_exif_data(file)pprint.pprint(exif)

打印出的内容如下:

{'ApertureValue': (169, 100),'BrightnessValue': (451, 100),'ColorSpace': 1,'ComponentsConfiguration': '???','Compression': 6,'DateTime': '2019:05:15 13:59:35','DateTimeDigitized': '2019:05:15 13:59:35','DateTimeOriginal': '2019:05:15 13:59:35','ExifImageHeight': 1940,'ExifImageWidth': 2592,'ExifInteroperabilityOffset': 719,'ExifOffset': 206,'ExifVersion': '0220','ExposureBiasValue': (0, 6),'ExposureMode': 0,'ExposureProgram': 2,'ExposureTime': (14, 10000),'FNumber': (18000, 10000),'Flash': 16,'FlashPixVersion': '0100','FocalLength': (4216, 1000),'FocalLengthIn35mmFilm': 21,'ISOSpeedRatings': 100,'ImageLength': 1080,'ImageWidth': 1920,'LightSource': 0,'Make': 'Xiaomi','MaxApertureValue': (169, 100),'MeteringMode': 1,'Model': 'MI 8','Orientation': 1,'ResolutionUnit': 2,'SceneCaptureType': 0,'SceneType': '?','SensingMethod': 1,'ShutterSpeedValue': (9419, 1000),'SubsecTime': '782963','SubsecTimeDigitized': '782963','SubsecTimeOriginal': '782963','WhiteBalance': 0,'XResolution': (72, 1),'YCbCrPositioning': 1,'YResolution': (72, 1)}

图像的EXIF信息简介及获取!相关推荐

  1. python读取图像的exif信息

    python读取图像的exif信息 python 读取图像的exif信息 import exifread PIL函数实现 python 读取图像的exif信息 前几天用PYQT做了一个工具,打开图片发 ...

  2. 【图像取证篇】图像的Exif信息及相关术语

    图像的Exif信息及相关术语 ​ -[suy] 文章目录 图像的Exif信息及相关术语 1.什么是图像的Exif信息? 2.图像的Exif信息包括哪些? 3.所有图像都有Exif信息吗? EXIF 标 ...

  3. 图像处理2_读取JPG图片的Exif属性(一) - Exif信息简介

    Exif 是什么? Exif就是用来记录拍摄图像时的各种信息:图像信息(厂商,分辨率等),相机拍摄记录(ISO,白平衡,饱和度,锐度等),缩略图(缩略图宽度,高度等),gps(拍摄时的经度,纬度,高度 ...

  4. 读取JPG图片的Exif属性(一) - Exif信息简介

    Exif 是什么? Exif就是用来记录拍摄图像时的各种信息:图像信息(厂商,分辨率等),相机拍摄记录(ISO,白平衡,饱和度,锐度等),缩略图(缩略图宽度,高度等),gps(拍摄时的经度,纬度,高度 ...

  5. windows上安装并使用exiftool修改图像exif信息

      使用exiftool可以对图像的exif信息进行读取.修改.写入等操作.在linux系统上可以直接通过命令行安装,非常方便.但是在windows上,一开始我看了这篇博客,感觉里面写的还挺详细的,就 ...

  6. java exif 怎么获取属性_Java如何读取图片EXIF信息

    Java如何读取图片EXIF信息 大家知道Java如何读取图片属性信息吗?下面小编为大家整理了Java读取图片EXIF信息的方法,希望能帮到大家! 首先介绍一下什么是EXIF,EXIF是Exchang ...

  7. 如何使用图片的exif信息计算相机焦距

    在做三维重建和视觉测量的应用中,如果不想做复杂的相机标定,那么可以从图像的exif信息中获取相机的焦距信息.这里提供两种方法: 1.通过35mm等效焦距来计算: 图像的exif信息可以从图像的属性中获 ...

  8. java exif 语言编码_Java读取图片EXIF信息的代码

    Java读取图片EXIF信息的代码 本文实例讲述了Java读取图片EXIF信息的方法.分享给大家供大家参考.具体分析如下: 首先介绍一下什么是EXIF,EXIF是Exchangeable Image ...

  9. 轻松获取图片和视频文件的Exif信息-Java篇

    前言 随着现在实景地图的如火如荼建设,无人机等航拍测绘手段的不断升级,我们在获取全景照片或者正射影像,全景视频等数据上更加快速.便捷.由于无人机本身不进行相关数据的处理,比如全景地图的生成.视频的信息 ...

最新文章

  1. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密...
  2. 人工智能:决胜未来之道培训课程大纲
  3. iOS常用第三方库之Masonry
  4. 如何制作python检查小软件_如何用Python制作整蛊小程序
  5. wxWidgets:日志概述
  6. 「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
  7. php 类常量用法,php类常量用法实例分析
  8. vue加跨域代理静态文件404_解决vue-router history模式和跨域代理 部署到IIS时404的一些问题...
  9. linux日志文件优缺点,Linux日志文件总结
  10. 【深度学习】基于Keras的手写体识别
  11. CISCO路由器的备份与还原(2)
  12. 全网最详细的纪录片观看&下载指南
  13. ae怎么卸载已经安装的插件_ae红巨人插件卸载教程!
  14. 手机音乐播放器页面html代码,仿酷狗html5手机音乐播放器主要部分代码
  15. Tomcat多虚拟主机实现
  16. 安装完Fedora 18后需要做的事情
  17. 淘宝flexible.js+rem适配pc端
  18. IAR代码溢出问题处理section placement failed
  19. HTTP的常用方法、GET和POST的区别
  20. SVN Tree Conflict处理

热门文章

  1. windows添加打印机
  2. OpenCV copyMakeBorder
  3. mqtt.js报错 n.createConnection is not a function
  4. 亲身经历的一次OCM考试
  5. Java用蚁群算法求最短路径_蚁群算法最短路径java
  6. Python基础——常见数据类型总结
  7. 教授专栏22 | 徐岩:推动高校知识转移 促港创科发展
  8. linux系统光标变粗了_linux终端光标变粗
  9. display:flex布局下white-space:nowrap失效问题解决
  10. 字母(letter)