jpeg图片的exif信息
来源:互联网 发布:河南网络广播电视台 编辑:程序博客网 时间:2024/05/21 15:49
EXIF(Exchangeable Image File)是“可交换图像文件”的缩写,当中包含了专门为数码相机的照片而定制的元数
据,可以记录数码照片的拍摄参数、缩略图及其他属性信息。exif其实是jpeg文件的一种,遵从jpeg标准,只是在文件
头信息中增加了有关拍摄信息的内容和索引图。
JEPG文件头必须以0xFF 0xD8开头,0xFF 0xD9结尾。然后后面会跟着出现以0xFF 0xE0为起始的application0,
0xFF 0xE1为起始的application1,以此类推。而exif信息就再app1里面。
按照 Exif 标准对这些标识符的定义,数码相机可以把各种拍摄信息记入数码图像中,应用软件可以读取这些数据,
再按照 Exif 标准,检索出它们的具体含义,一般而言包括以下一些信息:
下面单独对exif进行分析:
FF D8:jpeg文件起始标志
FF E1:app1标志,直接从app1开始,表示没有app0
00F4:app1的长度为244字节
45 78 69 66 00 00:“exif”字符串
49 49:表示小端,小端的时候要格外注意其取字符的时候是从后往前取,才能获得正确的数据。4D 4D表示大端。
2A 00:固定不变
08 00 00 00:固定不变,同时也是偏移量
05 00:表示有5个tag
接下来的,就是各个tag的详细信息:
每一个tag的长度都是12字节。
struct tag{
short id; //tag ID,比如上表的0x011A
short format; //数据格式,比如有些tag信息是数字,有的是文字
int count; //最多的字符个数
offset; //偏移量
}
比如上图:
1A 01:表示ID为0x011A,查表可知,表示水平方向分辨率
05 00:表示有理数、03表示short、02表示ASCII
01 00 00 00:
4A 00 00 00:表示偏移量,因为具体的信息是在后面存储的。这里的偏移需要加上08 00 00 00 = 82字节,而偏移量
要从ff e1后面开始算上图从第五个字符字节开始。此处可偏移到00 00 00 48 00 00 00 01,因为是有理
数,所以前面是分子,后面是分母,总共8个字节。
接下来还会有4个tag信息。
参考文档:
http://www.cppblog.com/lymons/archive/2010/02/23/108266.aspx#ExifMarker
- jpeg图片的exif信息
- 给JPEG添加Exif图片说明信息的简单方法
- 提取JPEG图片中的EXIF信息
- Java 读取 JPEG 文件的 exif 信息
- JPEG图像EXIF数据信息的解析
- JPEG: Exif信息相关
- 读取和修改JPEG图片文件的头信息EXIF和JFIF
- 从EXIF JPEG图片中提取GPS位置信息
- 获取图片的exif信息
- C#读取JPEG Exif 信息
- Jpeg图片属性读取EXIF
- 用C#读取图片的EXIF信息
- 获取图片的EXIF信息如此困难?
- flex获取图片的EXIF信息
- C# 获取图片的EXIF 信息
- 使用ImageIO保留EXIF信息的图片
- Android读取图片当中的信息exif
- Android修改图片的Exif信息
- 输入字符串以及输出
- Android:android的框架区别(网络框架、图片异步加载与缓存框架、数据框架)特点整理
- 第一次上机实验报告
- C++
- C++第一次上机训练项目二
- jpeg图片的exif信息
- IntelliJ IDEA
- Android Toast 设置statusbar沉浸式后 文字偏移问题
- SERVLET中的doGet与doPost两个方法之间的区别
- C#发起带证书的http请求(通常用于微信发红包)
- Oracle递归查询
- 获取鼠标的X,Y的位置
- ios内存管理
- bug宝典JAVA篇 java.util.zip.ZipException: invalid LOC header (bad signature)