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 定义名
中文定义名
备注
0x010EImageDescription图像描述-0x013BArtist作者使用者的名字0x010FMake生产商相机生产厂家0x0110Model型号相机型号0x0112Orientation方向有的相机支持,有的不支持0x011AXResolution水平方向分辨率-0x011BYResolution垂直方向分辨率-0x0128ResolutionUnit分辨率单位-0x0131Software软件固件Firmware版本或编辑软件0x0132DateTime日期和时间照片最后的修改时间0x0213YCbCrPositioningYCbCr定位色度抽样方法0x8769ExifOffsetExif子IFD偏移量-
0x829A
ExposureTime曝光时间即快门速度0x829DFNumber光圈系数光圈的F值0x8822ExposureProgram曝光程序自动曝光、光圈优先、快门优先、M档等0x8827ISOSpeedRatingsISO感光度Exif 2.3 中更新为 “PhotographicSensitivity”0x9000ExifVersionExif 版本参见“历史版本”一节0x9003DateTimeOriginal拍摄时间照片拍摄的时间0x9004DateTimeDigitized数字化时间照片被写入内存卡的时间0x9204ExposureBiasValue曝光补偿-0x9205MaxApertureValue最大光圈APEX为单位0x9207MeteringMode测光模式平均测光、中央重点测光、点测光等0x9208Lightsource光源一般记录白平衡设定0x9209Flash闪光灯记录闪光灯状态0x920AFocalLength镜头焦距镜头物理焦距0x927CMakerNote厂商注释参见“厂商注释”一节0x9286UserComment用户注释用户自定义数据0xA000FlashPixVersionFlashPix版本-0xA001ColorSpace色彩空间一般为sRGB0xA002ExifImageWidth图像宽度图像横向像素数0xA003ExifImageLength图像高度图像纵向像素数0xA433LensMake镜头生产商-0xA434LensModel镜头型号-

下面单独对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




0 0
原创粉丝点击