图像的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

别再踩坑了!手把手教你用EB Tresos Studio创建Autosar MCAL工程(含模块配置避坑指南)

本文详细介绍了使用EB Tresos Studio创建Autosar MCAL工程的完整流程,包括工程创建前的关键准备、模块配置的避坑指南以及工程验证与代码生成的实用技巧。通过实战案例和黄金准则,帮助开发者高效完成MCAL工程创建,避免常见错误,提升开发效率。

weixin_42536058的博客 444

STM32F407+LAN8720网口不通?别慌,手把手教你用CubeMX和HAL库搞定RMII配置与调试

本文详细介绍了STM32F407与LAN8720网口不通的全面排查与解决方法,涵盖硬件检查、CubeMX配置、PHY芯片初始化和LWIP协议栈优化。通过RMII接口配置、时钟树设置和PHY芯片调试,帮助开发者快速定位并解决网络连接问题,提升嵌入式网络开发效率。

weixin_30457551的博客 506

exif.js获取图片原始信息

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

weixin_50332439的博客 2375

光纤接口类型与应用场景全解析

本文全面解析了光纤接口的类型与应用场景,详细介绍了SC、LC、FC和ST等主流光纤接口的特点及适用环境。从数据中心的高密度布线到工业环境的极端条件,提供了专业的接口选型指南和实战经验,帮助读者根据具体需求选择最合适的光纤接口方案。

weixin_29289821的博客 411

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

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

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

智驾域控制器硬件架构:从接口丛林到算力核心的工程解码

本文深入解析了智驾域控制器硬件架构的设计挑战与工程实践。面对复杂的接口丛林,文章详细探讨了如何高效融合摄像头、雷达等多源传感器数据,并构建以多SOC为核心的强大算力平台。同时,文章强调了电源、时钟、散热等最小系统及车规级可靠性设计的关键作用,为工程师提供了从接口驯服到算力核心协同的完整硬件解码指南。

happy2的博客 482

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 574

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

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

2401_87225215的博客 1233

卡尔曼滤波器中的Q,R

对于系统状态的估计(滤波结果)所使用的信息来源于两个方面,一个是对系统状态演变模型的了解,包括系统转移矩阵和输入控制矩阵,输入孔质量等,另一方面来自于对系统状态的观测量。从上面公式来看,真正所要滤波得到的结果来自于公式(4)中的系统状态估计值x的某些分量,公式(4)的结果是由公式(1)所得到的状态预测值和来自观测量y计算得到的。所以,在不同算法中,R, Q的取值根据反应的不同量纲,可以有很大的变化,但它们的比值会决定了滤波值应该更多来自于系统模型演化的信息,还是来自于观察信号信息。

qq_43416206的博客 500

前端获取图片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

微信小程序 - 强力解决播放视频卡顿问题,小程序使用video组件播放视频或第三方视频插件,会出现卡顿或者无法播放的各种奇怪问题(微信小程序苹果ios/安卓播放视频很卡不流畅、视频太长或文件大等情况)

微信小程序视频组件播放卡顿,微信小程序video组件出现无法播放或卡顿,微信小程序video组件播放时会出现卡顿,微信小程序使用video组件播放视频的时候,会出现卡顿或者无法播放的问题,微信小程序安卓视频播放卡顿问题,微信小程序苹果ios手机播放视频不流畅很卡,加cdn还是卡,uniapp播放视频会有明显的卡顿问题,video视频时卡顿不流畅问题,为什么video组件播放视频卡顿?苹果微信小程序通过video组件播放视频时卡顿,怎么解决?微信小程序video组件出现无法播放或卡顿,设置custom-cac

🏆 前端领域优质创作者 1万+

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值