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

基于RK3588与FPGA的SDI视频处理系统:从MIPI CSI-2输入到DSI输出的全链路解析

本文深入解析了基于RK3588与FPGA的SDI视频处理系统全链路。系统利用FPGA作为高速接口转换与流管理核心,将SDI信号转换为MIPI CSI-2数据流送入RK3588进行智能图像处理与AI分析,处理结果再通过MIPI DSI回传,最终由FPGA控制编码为SDI输出,实现了专业视频接口与强大算力的高效协同。

s1t2u3的博客 667

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2646

exif.js获取图片原始信息

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

weixin_50332439的博客 2375

python docx设置标题中文字体rPr.rFonts.set(qn(‘w:eastAsia‘),u‘黑体‘),报错‘NoneType‘ object has no attribute ‘set‘

一、我的代码: 因为要编一个报告自动化生成的代码,所以用了python docx,在设置标题自己写了一段代码,要求将标题设置成:一级标题 黑体 小四 from docx import Document from docx.oxml.ns import qn from docx.shared import Pt def add_Head(document, level, text, font, size): # document word对象 # level 几级标题 # text 标题内容 # f

qq_40272386的博客 8855

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

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

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

CANoe实战:LIN Slave一致性测试全流程解析

本文详细解析了使用CANoe进行LIN Slave一致性测试的全流程,包括测试概述、环境搭建、模块集成、测试用例详解及报告分析。通过实际案例分享,帮助工程师掌握LIN 2.0/2.1/2.2、SAE J2602和ISO 17987等标准的自动化测试方法,提升汽车电子从节点的可靠性和兼容性验证效率。

weixin_42665725的博客 532

【网络安全】AntSword蚁剑新手快速入门(附实战案例)

蚁剑(AntSword)是一款开源的跨平台WebShell管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。蚁剑的特点主要有如下几点:1.支持多平台。包括macOS、Linux 32位、Linux 64位、Linux armv7l、Linux arm64、Windows 32位、Windows 64位。2.完善的文档。中国蚁剑文档地址。3.多项功能。文件管理功能、虚拟终端功能、数据库管理功能。4.内置代理功能。

等风来 1万+

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

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

2401_87225215的博客 1233

lammps后处理:ovito选择原子高级技巧讲解

大家好,我是小马老师。 本文介绍如何在ovito中使用公式(Expression)选择需要的原子。 用ovito查看lammps模拟结果时,可能会遇到选择特定原子的情况,比如选择坐标位于一定范围内的原子,或者选择结构为fcc的原子等等。 这时候,就需要用到expression selection功能。 Expression selection功能比较强大,下面分别介绍几种选择原子的方法。 在输入公式前,先点击“Add modification”->"Expression selection"选项,在B

lammps_jiayou的博客 2万+

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

107.在 Vue 3 中使用 OpenLayers 实现视图联动功能

是一个非常强大的 Web 地图渲染库,支持多种地图数据格式和交互操作。在 Vue 3 中,我们可以利用。绑定到真实的 DOM 元素上,我们就可以用它们来初始化 OpenLayers 地图。来封装和管理 OpenLayers 地图的状态,从而更高效地开发地图应用。,即两个地图窗口共享同一个视图(View),从而实现同步缩放、拖动等操作。这可以确保 Vue 组件销毁时,OpenLayers 也正确销毁地图实例。,并且它们会同步缩放和拖动,达到地图联动的效果。这样,无论你拖动哪个地图,另一个都会同步变化。

小彭的博客 1938

Android 17为什么会重写MessageQueue

DeliQueue 通过消除 MessageQueue 中的锁,提升了系统和应用的性能。合成基准测试: 得益于并发能力的提升(Treiber 栈)和更快的插入速度(最小堆),向繁忙队列进行多线程插入的速度比传统 MessageQueue 快了高达 5000 倍。Perfetto 追踪分析: 在从内部测试人员处获取的 Perfetto 追踪记录中,我们看到应用主线程在锁竞争上消耗的时间减少了 15%。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值