JPEG系列二 JPEG文件中的EXIF(上)
JPEG图片中的EXIF信息遵循TIFF格式标准,因此EXIF分为上下两篇。
IFH结构描述(图1)
名称
|
字节数
|
数据类型
|
说明
|
Byte order
|
2
|
Integer
|
TIF标记,其值为“MM”(0x4d4d)或“II”(0x4949)
0x4d4d表示该TIFF图是Motoral整数格式,即BigEndian;
0x4949表示该图是Intel整数格式,即LittleEndian。
|
Version
|
2
|
Integer
|
版本号,其值恒为0x2A 00
|
Offset to first IFD
|
4
|
Long
|
第一个IFD相对文件开始处的偏移量(可能会有多个顺序排列的IFD)
|
IFD及DE结构描述(图2)
名称
|
字节数
|
数据类型
|
说明
|
Directory Entry Count
|
2
|
Integer
|
该IFD中DE的数量
|
Directory Entry(1)
|
12
|
Integer
|
DE,“目录项”
|
Directory Entry(2)
|
12
|
Integer
|
DE的个数是不定的,因为每个DE只标识了图像的一个属性,那么这幅图像有N个属性就会有N个DE;
|
……
|
|
|
用户甚至可添加自定义的标记属性,这就是为什么称TIF格式文件为“可扩充标记的文件”的原因。
|
Directory Entry(N)
|
12
|
Integer
|
|
Offset to next IFD
|
4
|
Long
|
下一个IFD相对于文件开始处的位置,这是一个链式结构。
如果该数字为0,表示已经是最后一个IFD。
如果该TIF文件只包含了一幅图像,那么就只有一个IFD,这个偏移量也会等于0。
|
名称
|
字节数
|
数据类型
|
说明
|
tag
|
2
|
Integer
|
本属性的标签编号。在图像文件目录中,它是按照升序排列的(但不一定是连续的)
|
type
|
2
|
Integer
|
本属性值的数据类型
|
length
|
4
|
Long
|
该类型数据的个数
|
valueOffset
|
4
|
Long
|
属性值的存放偏移量。
tagID代表的变量值相对文件开始处的偏移量,但如果变量值占用的空间不多于4个字节(例如只有1个Integer类型的值),那么该值就直接存放在valueOffset中,没必要再另外指向一个地方了。
|
TagID
|
属性名称
|
type
|
说明
|
0100
|
图像宽
|
Integer
|
|
0101
|
图像高
|
Integer
|
|
0102
|
颜色深度
|
Integer
|
1为单色,4为16色,8为256色。
如果该类型数据个数>2个,说明是真彩图像
|
0103
|
图像数据是否压缩
|
Integer
|
压缩方式(1/2/5/6/32773),1为不压缩,其他表示压缩
|
0106
|
图像是否采用反色显示
|
Integer
|
01表示反色,否则表示不反色
对于RGB图,该值是2
|
0111
|
图像扫描线偏移量
|
Long
|
图像数据起始字节相对于文件开始处的位置
|
0116
|
图像扫描线的数量
|
Long
|
表示图像有几行扫描线,实际上等于图像高度
|
0117
|
图像数据字节总数
|
Integer
|
一般是个偶数。如果是奇数,那么实际存放时会在后面补一个0,但这个0不会计算在字节总数之内。
|
011A
|
水平分辩率偏移量
|
RATIONAL
|
单位:像素/英寸
分数型的属性,其值要占用8个字节,所以在valueOffset中存放的肯定是它的具体数值的偏移量,而不是数值本身。下同。
|
011B
|
垂直分辩率偏移量
|
RATIONAL
|
单位:像素/英寸
|
011C
|
像素存储顺序
|
Integer
|
每个像素的(R,G,B)是如何存储的。1表示按照RGBRGB的顺序来存储
|
0128
|
X/Y分辨率单位
|
Integer
|
X/Y轴分辨率的单位
|
0131
|
生成该图像的软件名
|
ASCII
|
字符型属性。值所占用的空间也会大于4字节,所以在valueOffset中存放的也是它们的值的偏移量,而不是值本身。下同。
|
0132
|
生成该图像的时间
|
ASCII
|
|
0140
|
调色板偏移量
|
Integer
|
256色和16色图像才有此属性,而且有连续2个调色板,但属性的length值只表示出1个调色板
|
|
0010: 07 84 42 61 50 B8 64 36 1D 0F 88 44 62 51 38 A4
0020: 56 2D 17 8C 46 63 51 B8 E4 76 3D 1F 90 48 64 52
0030: 39 24 96 4D 18 80 80 00 60 00 00 00 01 00 00 00
0040: 60 00 00 00 01 00 00 00 08 00 08 00 08 00 0F 00
0050: FE 00 04 00 01 00 00 00 00 00 00 00 00 01 03 00
0060: 01 00 00 00 11 00 00 00 01 01 03 00 01 00 00 00
0070: 0F 00 00 00 02 01 03 00 03 00 00 00 48 00 00 00
0080: 03 01 03 00 01 00 00 00 05 00 00 00 06 01 03 00
0090: 01 00 00 00 02 00 00 00 11 01 04 00 01 00 00 00
00A0: 08 00 00 00 15 01 03 00 01 00 00 00 03 00 00 00
00B0: 16 01 04 00 01 00 00 00 0F 00 00 00 17 01 04 00
00C0: 01 00 00 00 2F 00 00 00 1A 01 05 00 01 00 00 00
00D0: 38 00 00 00 1B 01 05 00 01 00 00 00 40 00 00 00
00E0: 1C 01 03 00 01 00 00 00 01 00 00 00 28 01 03 00
00F0: 01 00 00 00 02 00 00 00 3D 01 03 00 01 00 00 00
0100: 01 00 00 00 00 00 00 00
序号
|
偏移量
|
TagID
|
Type
|
length
|
Value/Offset
|
说明
|
1
|
0050
|
00FE
|
Long
|
1
|
00
|
未知属性值=0
|
2
|
005C
|
0100
|
Integer
|
1
|
11
|
图像宽为17像素(10进制)
|
3
|
0068
|
0101
|
Integer
|
1
|
0F
|
图像高为15像素(10进制)
|
4
|
0074
|
0102
|
Integer
|
3
|
48
|
3个Integer类型的值,共计6字节
所以Value/Offset中存放的是其值的偏移量。
其值存放在48-4D
|
5
|
0080
|
0103
|
Integer
|
1
|
05
|
图像是压缩数据,压缩类型为5
|
6
|
008C
|
0106
|
Integer
|
1
|
02
|
图像不反色显示
|
7
|
0098
|
0111
|
Long
|
1
|
08
|
图像数据起始字节为8
|
8
|
00A4
|
0115
|
Integer
|
1
|
03
|
未知属性值=3
|
9
|
00B0
|
0116
|
Long
|
1
|
0F
|
图像扫描线有15行
|
10
|
00BC
|
0117
|
Long
|
1
|
2F
|
图像共有47个字节的压缩数据
|
11
|
00C8
|
011A
|
RATIONAL
|
1
|
38
|
水平分辩率存放在38-3F
|
12
|
00D4
|
011B
|
RATIONAL
|
1
|
40
|
垂直分辩率存放在40-47
|
13
|
00E0
|
011C
|
Integer
|
1
|
01
|
像素存储顺序, 1为RGB
|
14
|
00EC
|
0128
|
Integer
|
1
|
02
|
Xresolution和Yresolution的单位,值为2
|
15
|
00F8
|
013D
|
Integer
|
1
|
01
|
未知属性值=1
|
0038-003F:60 00 00 00 01 00 00 00
0048-004D:08 00 08 00 08 00
JPEG系列二 JPEG文件中的EXIF(上)相关推荐
- JPEG系列二 JPEG文件中的EXIF(下)
https://blog.csdn.net/shelldon/article/details/54407534 EXIF格式介绍(下) JPEG图片中的EXIF信息是以TIFF格式保存的,关于TIFF ...
- JPEG系列二 JPEG文件中的EXIF(下)
EXIF格式介绍(下) JPEG图片中的EXIF信息是以TIFF格式保存的,关于TIFF格式的介绍,可以参考上篇. 下篇中将介绍EXIF中都保存了哪些数据,这些数据的内容和格式,最后介绍一下EXIF中 ...
- Linux学习系列二:Linux中的常用命令
这个系列的Linux教程主要参考刘遄老师的<Linux就该这么学>.用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间 ...
- CompactExifLib:访问JPEG文件中的EXIF标签
目录 介绍 背景 演示应用程序 使用代码 读写标签 标签ID和图像文件目录(IFD) 标签类型 整数 数组标签 字符串 有理数 日期和时间 原始数据和字节顺序 移除标签 加载和保存EXIF数据 GPS ...
- JPEG文件中的EXIF(下)
原文链接 EXIF格式介绍(下) JPEG图片中的EXIF信息是以TIFF格式保存的,关于TIFF格式的介绍,可以参考上篇. 下篇中将介绍EXIF中都保存了哪些数据,这些数据的内容和格式,最后介绍一下 ...
- JPEG系列三 JPEG图像压缩
转载自 www.thecodeway.com http://www.ibm.com/developerworks/cn/linux/l-cn-jpeg/ JPEG压缩算法之前已有很多前辈详细讲解过,我 ...
- JPEG系列一 JPEG图片的文件格式
JPEG图片的文件格式 互联网上广泛使用的image/jpeg 图片,准确来说,全称应该叫做使用 JPEG标准压缩图像,使用JFIF标准封装图像数据的图形文件. JPEG 是一个压缩标准,JFIF 是 ...
- JPEG系列一 JPEG图片的文件格式
https://blog.csdn.net/shelldon/article/details/54144406 JPEG图片的文件格式 互联网上广泛使用的image/jpeg 图片,准确来说,全称应该 ...
- 标签系列二:spring 中bean解释以及bean标签里面的属性
一.bean标签: 英文解释:Defines a single (usually named) bean. A bean definition may contain nested tags for ...
最新文章
- GridView标题行换行之我见 (转)
- ajax回调函数的返回值,使用ajax和回调函数向函数传递/返回值
- 2021-03-04 Halcon初学者知识 【18】谈谈秩滤波(Rank filter)
- Java8 EnumSet 源码简单分析
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 工作166:错误的处理方式
- CSS开发过程中的20个快速提升技巧
- 各纬度气候分布图_世界气候类型分布图高清版(世界气候分布高清地图)V1.0 免费版...
- linux能yum装mcafee吗,Ubuntu安装Mcafee步骤
- 华为freebuds4i降噪方法分享(教程分享)
- 南京大学计算机考研难度分析,2020考研难度高的院校分析之【南京大学】
- 斯坦福大学校工程学院计算机,加州大学洛杉矶分校:受大脑启发的计算机视觉的对象发现和检测...
- html5限制拖拽区域怎么实现,html5怎么实现拖拽
- 我的世界服务器java出错_看懂 游戏《Minecraft》的崩溃报告 服务端/客户端
- powerdesinger 批量修改表前缀
- tcpcopy填坑实践。
- ll -h和du -sh的区别
- EDU教育版Office365使用教程(二):桌面版Office365下载安装
- 【5万字】文件增量复制【OS库、Tkinter库等】
- 江苏省计算机应用基础统考,年江苏省普通高“专转本”统一考试计算机应用基础.doc...
热门文章
- Docker基础篇 - (六)Docker 网络Spring Boot微服务打包Docker镜像
- MySQL5.7 Attempted to use a closed or broken resource pool 处理过程
- 真正可以根治高度近视眼的方法(转载)
- 7月18日服务器维护时,2018年7月18日维护公告
- android智能电灯,爱克 E-Light(智能灯泡)apk
- Centos 7 安装 docker
- fliggy 十三姨
- Mars3D(含Cesium)数据及服务篇:单体小模型转为glTF格式
- java 与或非_JAVA 或与非运算符 与()、或(|)、异或(^)
- 李宏毅机器学习笔记第14周_生成式对抗网络(GAN)