图像的EXIF信息简介及获取!

图像元数据(Metadata) ——Exif信息分析 文章目录1、元数据1. 图片元数据2. 如何查看元数据2、图像Exif信息2.1 简介2.1 JPG文件结构2.2 Exif与TIFF的关系2.3 Exif元数据2.4 总结3、Exif工具3.1 Pillow库3.2 exiv23.3 exifread库3.4 piexif库4、Exif记录的信息(标签)参考文献 1、元数据 元数据(Matedata),又称中介数据、中继数据,为描述数据的数据(... 阅读详情
AI摘要

EXIF信息,全称可交换图像文件格式,专为数码照片设计,记录拍摄参数及设备信息。本文详细介绍EXIF的起源、内容及如何用Python读取。

一、什么是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] = value
    except IOError:
        print('IOError' + fname)

    return ret

if __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 数据编辑 前段时间小米出的水印边框照片模板被大家玩的不亦乐乎,本来想着写一个实现合成各厂商带水印边框照片的工具。这个头脑一热想要开发的工具最终也没有着手实现,不过这里面有一个知识点倒是令我很感兴趣。合成水印边框通常会自动带上照片的拍摄数据——光圈、快门、感光度、品牌 LOGO,那这些数据都是从哪里获取照片里面又是怎么存储的呢?在查询了大量资料之后得知,这些参数都来自于 Exif 数据,于是对 Exif 的技术标准、读写 Exif 的 JS 框架做了一些研究,这篇文章就是据此研究总结而来。 阅读详情

相关推荐

挖掘图片的秘密:如何用piexif提取和修改Exif数据

挖掘图片的秘密:如何用piexif提取和修改Exif数据

qq_46301912的博客 3049

exif信息中的数据_什么是EXIF数据,如何将其从照片中删除?

exif信息中的数据A photo’s EXIF data contains a ton of information about your camera, and potentially where the picture was taken (GPS coordinates). That means, if you’re sharing images, there’s a lot of det...

4375

python读取图像的exif信息

python读取图像的exif信息import exifread功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 ###...

weixin_43143224的博客 1万+

照片 exif 编辑gps_如何在Android上查看(和编辑)照片EXIF数据

照片 exif 编辑gpsPhoto EXIF data isuseful for seeing pertinent information about a picture: shutter speed, aperture, exposure time, time taken, geolocation—the list goes on and on. Checking this sort of ...

culiuman3228的博客 2132

获取照片的Exif信息

EXIF(Exchangeable image file format)是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。一般而言包括以下一些信息:Image Description 图像描述、来源,指生成图像的工具Artist 作者 有些相机可以输入使用者的名字Make 生产者 指产品生产厂家Model 型号 指设备型号Orientation 方向 有的

笨鸟的IT生涯 1880

获取图片的EXIF信息如此困难?

对于数码相机所拍摄出的图片,Exif信息非常重要。Exif是英语Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Electronic Industry Development Association) 制订,目前的版本是修改发表于1998年6月的2.1版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF --

iorikyo的专栏 4742

1024程序员节带你玩转图片Exif信息获取之JavaScript

本文简单介绍了exif.js的基础知识,然后介绍了如何在html页面中集成exif.js,其次重点说明了3种常用的使用场景,有图有真相,通过示例运行的方式来讲解exif.js的具体使用案例。

夜郎King的博客 1万+

【AVD】C++ 不解码获取 JPG 图片宽高、旋转信息等 EXIF 信息

不解码,使用 C++ 类来快速获取 JPG 文件的宽高及旋转信息。

我是一只小小小小鸟 3980

图像中的Exif信息及其处理

1.Exif 可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的文件格式,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于JPEG、TIFF、RIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息[1]。 xif标准最初由日本电子工业发展协会(JEIDA - Japan Electronic Industry Development Association)制订,目前的最新版本是发布

机器人视觉感知 8972

利用照片携带的EXIF来估计焦距等信息

(本文章大部分内容参考Noah Snavely) 等你利用数码相机拍摄照片时,相机常常会在图片中嵌入很多有用的信息到JPEG文件中。通常涵盖曝光时间、焦点、(照相机,望远镜等的)光圈、是否闪光灯被开启了还有焦距等信息。焦距信息在绘制全景图的时候非常重要。下面将以提取EXIF中的焦距信息为例,并介绍如何将它转换成像素单元的表示(这样更利于全景图绘制中的图像缝合操作)。 第一步:提

Rouen的专栏 6378

修改图像Exif数据: 5种使用 Python 读取和修改图像 EXIF 元数据的方法_python读取exif信息(2)

EXIF 数据或可交换图像文件格式数据是存储在图像文件中的一组元数据。它提供了拍摄图像时所用相机设置的详细信息,如 GPS 坐标、快门速度、光圈、ISO 和焦距。此外,它还包括照片拍摄的日期和时间、地点以及其他技术细节。如果您想了解有关 EXIF 的更多信息,请参阅EXIF或文章保护您的照片:Exif 数据查看器和 Exif 数据移除器。只需几行代码,Python 就能从图像中提取并显示 EXIF 数据。这有助于轻松查看和分析图像元数据,而无需专业软件。

2401_84972870的博客 1668

使用PHP获取图像文件的EXIF信息

使用PHP获取图像文件的EXIF信息在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型、大小等,这些信息就称为 EXIF 信息...

硬核项目经理 2853

Java从照片中提取EXIF信息指南

本文还有配套的精品资源,点击获取 简介:在Java中读取照片的Exif信息是图像处理的一个重要方面,它包含了关于拍摄日期、时间、位置和相机设置等关键数据。本文介绍如何利用metadata-extractor库来提取JPEG、TIFF、HEIC等格式照片的Exif元数据。引入库后,通过几个简单步骤即可实现:创建Metadata对象,使用MetadataReader读取元数据,...

weixin_36364707的博客 2628

Java获取照片的Exif信息,并解析GPS

Java获取照片的Exif信息,并解析GPS

qq_40985985的博客 5366

手把手教你用Origin拟合真应力-真应变曲线:从数据到加工硬化指数n的完整流程

本文详细解析了如何使用Origin软件拟合真应力-真应变曲线并计算加工硬化指数n的全流程。从数据预处理、曲线绘制到Hollomon方程拟合,逐步指导材料科学研究人员完成实验数据分析,帮助准确评估金属材料的力学性能与强化特性。

view3的博客 715

ARM Cortex平台NEON指令集优化实战指南

本文为ARM Cortex平台开发者提供了一份全面的NEON指令集优化实战指南。文章从NEON的SIMD架构原理讲起,详细介绍了开发环境搭建、NEON内联函数与自动向量化两种核心编程方法、关键数据类型与指令,并通过图像饱和运算、矩阵乘法等实战案例,深入解析了性能调优技巧与常见避坑指南,旨在帮助开发者充分释放ARM处理器的并行计算潜力。

weixin_29162439的博客 260

exif.js获取图片原始信息

Exif.js 提供了 JavaScript 读取图像的原始数据的功能扩展,例如:拍照方向、相机设备型号、拍摄时间、ISO 感光度、GPS 地理位置等数据。

weixin_50332439的博客 2375

物料主数据管理难在哪?基于AI算法的数据清洗工具了解一下

企企通打造的一套以AI模型和算法为核心的产品及服务,可针对各类企业的不同主数据痛点难点,提供多种解决方案,能够快速完成物料主数据清洗、识别、匹配、梳理,满足一物一码、分类梳理、一品多商、多维度比价、精准寻源选品、建立标准物料库、供应商及客户主数据清洗等业务场景需求。随着AI技术的快速发展,智能算法在数据清洗领域的应用越来越广泛,越来越多的数据清洗工作已经开始交由智能算法完成,通过自动化的方式处理大量数据,识别和纠正错误,填补缺失值,检测异常值,以及执行其他数据预处理任务,并提高效率并减少人为错误。

QQT_qqt的博客 1364

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

图片的Exif信息及相关术语 ​ —【suy】 文章目录图片的Exif信息及相关术语1、什么是图片的Exif信息?2、图片的Exif信息包括哪些?3、所有图片都有Exif信息吗?EXIF 标识术语Tiff 相关术语GPS 相关术语总结 1、什么是图片的Exif信息? ​ Exif全称“Exchange able image file format”,中文翻译为“可交换图像文件格式”,是专门为数码相机的照片设定的可交换图像文件格式,可以记录数码照片的属性信息和拍摄数据,也就是图片的元数据(Meta

蘇小沐的电子数据取证博客 3501

遥感生态指数(RSEI)——四个指数的计算

遥感生态指数是在4个生态指数的基础上通过主成分变换得出的一个评价生态环境质量的指标。因此,第二部分就是要分别计算出这4个指数的值。 ①首先,是绿度指数的计算,一般用归一化植被指数(NDVI) NDVI=(NIR-Red)/(NIR+Red) 在Bandmath工具中输入NDVI计算公式 (float(b4-b3))/(b4+b3) 其中,b3、b4分别是红波段和近红外波段 ②其次,是湿度计算。 WET = c1B1 + c2B2 + c3B3...

qq_41978498的博客 9万+

matlab生成blocks、bumps和doppler标准测试信号

关键函数:wnoise使用方式X = wnoise(FUN,N) [X,XN] = wnoise(FUN,N,SQRT_SNR) [X,XN] = wnoise(FUN,N,SQRT_SNR,INIT)X = wnoise(FUN,N) 返回由 FUN给出的信号,长度为2^N,幅值范围[0,1].[X,XN] = wnoise(FUN,N,SQRT_SNR) ,返回了一个测试信号X,以及一个加噪

ZSZ_shsf的博客 6580

1024程序员节带你玩转图片Exif信息获取之JavaScript_exif-js

1024是2的十次方,二进制计数的基本计量单位之一。1G=1024M,而1G与1级谐音,也有一级棒的意思。程序员就像是一个个1024,以最低调、踏实、核心的功能模块搭建起这个科技世界。1024程序员节是广大程序员的共同节日。从2015年起,每年10月24日定义为程序员节。以一个节日的形式,向通过coding改变世界,也以实际行动在浮躁的世界里,固执地坚持自己对于知识、技术和创新追求的程序员们表示致敬。在致敬技术的同时,有点程序猿(媛)们的自我调侃的意思。

2401_87225215的博客 1233

【计算机组成原理】实验4:单周期CPU(Verilog)中海大

【计算机组成原理】实验4:单周期CPU

m0_63023532的博客 3660

前端获取图片exif信息

对又是我,每天都有新的需求。这次的需求是上传图片的时获取图片的宽高、设备、光圈等信息。 不用考虑服务端做,他们肯定是不做。pc、android、ios 都支持了,现在就缺少 web 这边上传的图片了。 获取图片宽高 img = new Image(); img.src = URL.createObjectURL(file) img.onload = function(){ console.log(img.naturalWidth || img.width) } URL.cr..

高先生的猫 2501

Comsol有限元网格剖分实战:从基础操作到高效仿真技巧

本文系统介绍了COMSOL有限元网格剖分的核心实战技巧。从基础的物理场控制与用户控制网格选择,到三角形、四边形、四面体等网格单元类型的适用场景,再到扫掠网格、边界层网格与复制网格等高效剖分方法,最后讲解了网格质量评估与几何预处理的关键步骤。旨在帮助用户掌握从自动到手动、从基础到高效的网格剖分艺术,实现仿真精度与计算效率的最佳平衡。

j7k8l的博客 375

25、BDS-3卫星信号性能与PPP-B2b增强消息完整性分析

本文对BDS-3卫星信号性能及PPP-B2b增强消息的完整性进行了系统分析。评估了MEO、IGSO和GEO卫星的轨道与时钟精度,得出BDS-3总体SISRE为0.25 m,系统完整性可覆盖99.999%的误差。分析表明SIS中断主要由时钟调整和轨道机动引起,个别卫星存在因境外监测受限导致的非计划中断。通过自研解码软件对PPP-B2b增强消息进行采集与解析,实验结果显示BDS-3和GPS的平均历元完整性率均高于98.55%,其中卫星掩码和时钟校正消息的完整性率超过99.8%。研究还发现IGSO卫星相比MEO卫

quiet的专栏 145
上一篇: 常用去除离群值的算法!
下一篇: Ubuntu下安装matlab详细教程!
dulingwen
博客等级 码龄9年 519粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值