• Android 下的EXIF


    一.什么是Exif

    Exif(Exchangeable Image File 可交换图像文件)是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍 摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图 等。简单地说,Exif=JPEG+拍摄参数。因此,你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能 处理 Exif信息。

    所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。文件头中有一系列“0xFF??”格式的字符串,称为“标识”,用来 标记JPEG文件的信息段。“0xFFD8”表示图像信息开始,“0xFFD9”表示图像信息结束,这两个标识后面没有信息,而其它标识紧跟一些信息字 符。
      0xFFE0 -- 0xFFEF之间的标识符称为“应用标记”,没有被常规JPEG文件利用,Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全 球定位信息。按照Exif2.1标准对这些标识符的定义,数码相机可以把各种拍摄信息记入数码图像中,应用软件可以读取这些数据,再按照Exif2.1标 准,检索出它们的具体含义,一般而言包括以下一些信息:
      Image Description 图像描述、来源. 指生成图像的工具
      Artist作者 有些相机可以输入使用者的名字
      Make 生产者 指产品生产厂家
      Model 型号 指设备型号
      Orientation方向 有的相机支持,有的不支持
      XResolution/YResolution X/Y方向分辨率 本栏目已有专门条目解释此问题。
      ResolutionUnit分辨率单位 一般为PPI
      Software软件 显示固件Firmware版本
      DateTime日期和时间
      YCbCrPositioning 色相定位
      ExifOffsetExif信息位置,定义Exif在信息在文件中的写入,有些软件不显示。
      ExposureTime 曝光时间 即快门速度
      FNumber光圈系数
      ExposureProgram曝光程序 指程序式自动曝光的设置,各相机不同,可能是Sutter Priority(快门优先)、Aperture Priority(快门优先)等等。
      ISO speed ratings感光度
      ExifVersionExif版本
      DateTimeOriginal创建时间
      DateTimeDigitized数字化时间
      ComponentsConfiguration图像构造(多指色彩组合方案)
      CompressedBitsPerPixel(BPP)压缩时每像素色彩位 指压缩程度
      ExposureBiasValue曝光补偿。
      MaxApertureValue最大光圈
      MeteringMode测光方式, 平均式测光、中央重点测光、点测光等。
      Lightsource光源 指白平衡设置
      Flash是否使用闪光灯。
      FocalLength焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距 MakerNote(User Comment)作者标记、说明、记录
      FlashPixVersionFlashPix版本 (个别机型支持)
      ColorSpace色域、色彩空间
      ExifImageWidth(Pixel X Dimension)图像宽度 指横向像素数
      ExifImageLength(Pixel Y Dimension)图像高度 指纵向像素数
      Interoperability IFD通用性扩展项定义指针 和TIFF文件相关,具体含义不详
      FileSource源文件 Compression压缩比。

    二.Camera中拍照流程


    在Android Camera程序开发过程中,要用到Exif相关的知识,如果处理不当,会导致拍摄的JPEG图片无法正常浏览。
    在Froyo(Android 2.2)源码中的Camera应用是不对Exif信息进行写操作,而只是读操作,对于Exif的写操作是交给Camera硬件抽象层去完成,这是 google的设计逻辑。但是不同的Android平台及其相关子平台,再加上不同的Camera应用,相互交替,排列组合,或许会出现这样一种情况:底 层没有去写Exif,而上层应用也没有写Exif信息,那么图片的显示信息将会丢失。其中影响最为严重的是Orientation这个参数。

    Froyo camera的逻辑是这样的:
    在Camera这个Activity中,有一个内部类ImageCapture,其中包含一个重要的方法:
    private void capture() {
    // Set rotation.
    mParameters.setRotation(mLastOrientation);
    ....................
    .....................
     mCameraDevice.setParameters(mParameters);

    mCameraDevice.takePicture(mShutterCallback, mRawPictureCallback, mPostViewPictureCallback, new JpegPictureCallback(loc));
    }

    大致流程是这样的:
    1.将拍照时相机的方向添加进Camera.Parameters的实例中;
    2.将全部相机拍照参数传给android.hardware.Camera的对象;
    3.调用方法takePicture,并设置好非常重要的4个callback;
    4.生成Exif数据的事情就由HAL来完成;
    5.第4个callback返回数据(这个callback是最重要的,而且是不可缺省的,也就是说前3个callback设置成Null也不会影响拍照功能),见如下代码:
    private final class JpegPictureCallback implements PictureCallback {
    public void onPictureTaken(final byte[] jpegData, final android.hardware.Camera camera) {
    //jpegData为JPEG数据,是由HAL层根据应用传输的各种参数(即Camera.Parameters的实例)以及JPEG压缩算法生成的。
    mImageCapture.storeImage(jpegData, camera, mLocation);
    }
    }

    三.Exif使用方法及代码优化方案


    什么地方用到Exif信息呢?我遇到的至少有如下这么几个地方:
    1.生成右上角所略图;
    2.图片显示应用,例如android自带的gallery3d应用;
    3.图片回显;
    4.短(彩)信等需要添加camera附件的应用.

    看看源码: ImageManager中是这样读取Exif方向参数的。
        public static int getExifOrientation(String filepath) {
            int degree = 0;
            ExifInterface exif = null;
            try {
                exif = new ExifInterface(filepath);
            } catch (IOException ex) {
                Log.e(TAG, "cannot read exif", ex);
            }
            if (exif != null) {
                int orientation = exif.getAttributeInt(
                    ExifInterface.TAG_ORIENTATION, -1);
                if (orientation != -1) {
                    // We only recognize a subset of orientation tag values.
                    switch(orientation) {
                        case ExifInterface.ORIENTATION_ROTATE_90:
                            degree = 90;
                            break;
                        case ExifInterface.ORIENTATION_ROTATE_180:
                            degree = 180;
                            break;
                        case ExifInterface.ORIENTATION_ROTATE_270:
                            degree = 270;
                            break;
                    }

                }
            }
            return degree;
        }

    这个方法可以进一步优化,从而对于Exif信息的写入不再依赖底层。那就是比较一下传输给底层的orientation与实际返回的是否相等,不相等就是底层写入Exif信息出错,我们就可以在应用层进行修正。
    可以添加一个判断分支如下:(其中EXIF_ORIENTATION是我们缓存的应用传给底层的值)。
    else if(orientation == 0 && EXIF_ORIENTATION != 0) {
                    switch (EXIF_ORIENTATION) {
                    case 90:
                        orientation = ExifInterface.ORIENTATION_ROTATE_90;
                        degree = 90;
                        break;
                    case 180:
                        orientation = ExifInterface.ORIENTATION_ROTATE_180;
                        degree = 180;
                        break;
                    case 270:
                        orientation = ExifInterface.ORIENTATION_ROTATE_270;
                        degree = 270;
                        break;
                    }
                    exif.setAttribute(ExifInterface.TAG_ORIENTATION, Integer.toString(orientation));
                    try {
                        exif.saveAttributes();
                    } catch (IOException e) {
                         Log.e(TAG, "cannot save exif", e);
                    }
                }


    在应用层对于Exif的操作是通过android.media.ExifInterface接口完成的。
    通过public void setAttribute (String tag, String value) 来设置,而获取可以通过 public int getAttributeInt (String tag, int defaultValue) 和 public String getAttribute (String tag) 两种方法都可以,getAttributeInt 重载方法一第二个参数为我们设置的默认值,如果成功则返回相应Tag的值;特定的整数内容为该方法直接返回值。而重载方法二该方法直接返回结果,如果失败 则为null。

    结论

    这样,经过简单改造(只是添加了对Exif信息校验以及写操作的逻辑)的Camera应用将更加健壮,不依赖平台底层是否处理了Exif信息,即使出现异常,应用能够自动修正。
    这里只是以Exif中的 Orientation参数为例,其他参数可以以此类推,保证拍摄出来的图片符合标准。

    转自:http://blog.csdn.net/zoe6553/article/details/6297409

    大概翻译了一下,非常的粗糙,慢慢修正。请高手自动飘过~

    因为做图像压缩时会损失相机写入的如光圈、快门等信息,所以自己写了个图像压缩小玩意,顺便研究了一下Exif。

    原文地址:Exif file format

    JPEG格式和标志

    JPEG文件都是以十六进制 '0xFFD8'开始,以'0xFFD9'结束。在JPEG数据中有像'0xFF**'这样的数据,这些被称为“标志”,它表示JPEG信息数据段。0xFFD8 表示SOI(Start of image 图像开始),0xFFD9表示EOI(End of image 图像结束)。这两个特殊的标志没有附加的数据,而其他的标志在标志后都带有附加的数据。基本的标志格式如下:

    0xFF + 标志数字(1字节) + 数据大小(2字节) + 数据(n字节)

    数据大小  (2字节) 是大端顺序表示(Motorola方式),从高字节开始。请注意“数据”包含了数据大小的描述,如果一个标志为:

    FF C1 00 0C

    则表示标志0xFFC1有0x000C(十进制12)个字节的数据,但是数据的大小 '12' 也包含了记录“数据大小”的字节,所以在0x000C 后面只有10个字节的数据量。

    在JPEG格式中,一些标志描绘数据后,跟着的就是SOS(Start of stream  数据流开始)标志。在SOS标志之后,就是JPEG图像流,直到EOI标志终结。

    SOI Marker

    Marker XX size=SSSS

    Marker YY size=TTTT

    SOS Marker size=UUUU

    Image stream

    EOI Marker

    FFD8

    FFXX

    SSSS

    DDDD......

    FFYY

    TTTT

    DDDD......

    FFDA

    UUUU

    DDDD....

    I I I I....

    FFD9

    Exif中使用的标志

    从0xFFE0 ~ 0xFFEF 的标志是“应用程序标志”,在解码JPEG 图像的时候不是必需使用的。这些标志被用在用户应用中。例如:老款的Olympus(奥林巴斯)、canon(佳能)、casio(卡西欧)、Agfa(爱克发)的数码相机使用JFIF(JPEG档案交换格式)来存储相片的。JFIF使用APP0(0xFFE0)标志来插入数码相机的配置数据和缩略图的。

    Exif也使用应用程序标志来插入数据,但是Exif使用APP1(0xFFE1)标志以避免和JFIF格式冲突。每个Exif文件格式都是从下面格式开始的:

    SOI Marker

    APP1 Marker

    APP1 Data

    Other Marker

    FFD8

    FFE1

    SSSS 457869660000 TTTT......

    FFXX SSSS DDDD......

    从SOI(0xFFD8)标志开始,所以这是一个JPEG文件。后面随即跟着个一个APP1标志。所有的Exif数据都储存在APP1数据区中。在上表中的 "SSSS" 部分表示APP1数据(Exif  数据区域)的大小。请注意其大小"SSSS"包括大小描述"SSSS"其本身。

    APP1的数据从"SSSS"后开始。第一部分是特殊数据,使用ASCII字符"Exif"和两个字节的 0x00 ,它定义了是否使用Exif。

    APP1标志数据之后,是其他JPEG标志。

    Exif数据结构

    大略的Exif数据结构(APP1)如下。它采用了"Intel"的小端字节顺序方案,且包含JPEG格式的缩略图。总体上,Exif数据是从ASCII字符"Exif"和2个字节的0x00开始,后面就是Exif的数据了。Exif使用TIFF格式来存储数据。想知道更多关于TIFF格式内容,请浏览"TIFF6.0 specification"

    FFE1

    APP1 Marker

    SSSS

    APP1 Data

    APP1 Data Size

    45786966 0000

    Exif Header

    49492A00 08000000

    TIFF Header

    XXXX. . . .

    IFD0 (main image)

    Directory

    LLLLLLLL

    Link to IFD1

    XXXX. . . .

    Data area of IFD0

    XXXX. . . .

      

    Exif SubIFD

    Directory

    00000000

    End of Link

    XXXX. . . .

    Data area of Exif SubIFD

    XXXX. . . .

      

    Interoperability IFD

    Directory

    00000000

    End of Link

    XXXX. . . .

    Data area of Interoperability IFD

    XXXX. . . .

    Makernote IFD

    Directory

    00000000

    End of Link

    XXXX. . . .

    Data area of Makernote IFD

    XXXX. . . .

    IFD1(thumbnail image)

    Directory

    00000000

    End of Link

    XXXX. . . .

    Data area of IFD1

    FFD8XXXX. . . XXXXFFD9

    Thumbnail image

    TIFF头的格式

    TIFF头指的是TIFF格式的前8个字节。前两个字节定义了TIFF数据采用何种字节顺序。如果是0x4949 = "II",表示采用"Intel"的小端字节顺序,如果为0x4d4d = ''MM",表示采用"Motorola"的大端字节顺序。例如:值'305,419,896'用十六进制表示为0x12345678.在Motorola的大端字节顺序中以0x12,0x34,0x56,0x78的顺序存储。如果采用Intel的小端字节顺序,则以0x78,0x56,0x34,0x12的顺序存储。现在来看,大多数数码相机采用Intel的方式。Ricoh(理光)采用了Motorola的方式。Sony(索尼)除了D700都采用Intel的的字节顺序。Kodak(柯达)DC200/210/240采用Motorola方式,但是DC220/260使用PowerPC却采用了Intel的方式!因此我们在获取Exif数据时,必须每次都确认它的字节顺序。虽然JPEG数据只采用Motorola方式的字节顺序,但Exif却允许采用两种方式。我不明白为什么Exif不修改字节顺序为Motorola方式。

    然后的两个字节总是2个字节长度的0x002A。如果数据采用Intel的字节顺序,这两个字节为"0x2A,0x00"。如果采用Motorola的字节顺序,则为"0x00,0x2A"。TIFF头的最后4个字节是第一个IFD(Image File Directory, described in next chapter 图像文件目录,描述下一个字符)的偏移量。在TIFF格式中所有的偏移量都是从TIFF头的第一个字节("II"或者"MM")开始计算的到所在位置的字节数目,这个偏移量也不例外。通常第一个IFD是紧跟在TIFF头后面的,所以它的偏移量为'0x00000008'。

    Byte align

    TAG Mark

    Offset to first IFD

    "I I" or "MM"

    0x002a

    0x00000008

    IFD:图像文件目录(Image file directory )

    接着TIFF头的是第一个IFD。它包含了图像信息数据。在下表中,开始的两个字节('EEEE')表示这个IFD所包含的目录实体数量。然后紧跟着就是实体对象(每个实体12个字节)。在最后一个目录实体后面有一个4字节大小的数据(表中的是'LLLLLLLL'),它表示下一个IFD的偏移量。如果这个偏移量的值是'0x00000000',就表示这个IFD是最后一个IFD。

    EEEE

    No. of directory entry

    TTTT

    ffff

    NNNNNNNN

    DDDDDDDD

    Entry 0

    TTTT

    ffff

    NNNNNNNN

    DDDDDDDD

    Entry 1

    . . . . . . . . .

    . . . . . .

    TTTT

    ffff

    NNNNNNNN

    DDDDDDDD

    Entry EEEE-1

    LLLLLLLL

    Offset to next IFD

    上表中的'TTTT'(2字节)是标签号,代表各种数据。'ffff'(2字节)是数据格式。'NNNNNNNN'(4字节)是组成元素的数量。'DDDDDDDD'(4字节) 包含数据本身或者数据的偏移量。

    数据格式

    数据格式(上表中的'FFFF')如下表所定义的一样。"rational"表示一个分数,它包含两个signed/unsigned long integer值并且第一个为分子,第二个为分母。

    Value

    1

    2

    3

    4

    5

    6

    Format

    unsigned byte

    ascii strings

    unsigned short

    unsigned long

    unsigned rational

    signed byte

    Bytes/component

    1

    1

    2

    4

    8

    1

    Value

    7

    8

    9

    10

    11

    12

    Format

    undefined

    signed short

    signed long

    signed rational

    single float

    double float

    Bytes/component

    1

    2

    4

    8

    4

    8

    你可以用组成元素的字节数('bytes/components')的值(见上表)乘以储存在'NNNNNNNN'区域中的组成元素的数量得到数据总长度。如果这个总长度小于4个字节,那么'DDDDDDDD'中的是这个标签(Tag)的值。如果总长度大于等于4个字节,'DDDDDDDD'中的是数据存储地址的偏移量。

    IFD数据结构

    在Exif格式中,第一个IFD是IFD0(主图像的IFD),它链接着IFD1(缩略图的IFD)后IFD链终止。带式IFD0/IFD1不包含像快门速度,焦距等任何数码相机的信息。IFD0总是包含特殊的标签(Tag)Exif的偏移量(0x8769) ,它说明道Exif  SubIFD(子IFD)的偏移量。Exif SubIFD(子IFD)也是IFD的格式,它包含了数码相机的信息。、

    Exif格式的扩展方案(Exif2.1/DCF)中,Exif SubIFD 包含了特殊标签 Exif互用偏移量(Exif Interoperability Offset)(0xA005)。它指向互用的IFD(Interoperability IFD)。在DCF(数码相机格式)规范中,这个标签是必须的且子IFD(SubIFD(主图像IFD))和IFD1(缩略图IFD)都可以带使用互用的IFD(Interoperability IFD)。通常,只有主图像使用带有这个标签。

    一些数码相机使用IFD数据格式来表示制造商数据——制造商特殊的神秘数字区。要小心的编写程序,因为很难区分制造商数据是否使用了IFD格式。附录中有一些制造商数据的信息。

    0000: 49 49 2A 00 08 00 00 00-02 00 1A 01 05 00 01 00

    0010: 00 00 26 00 00 00 69 87-04 00 01 00 00 00 11 02

    0020: 00 00 40 00 00 00 48 00-00 00 01 00 00 00

    如果上面数据为TIFF数据的第一个部分,那么可以解释为:

      头两个字节为"II",是'Intel'的字节顺序;

      地址0x0004~0x0007是 is 0x08000000,IFD0从地址'0x0008'开始;

      地址 0x0008~0x0009 是 0x0200,吗,IFD0有2个目录实体;

      地址 0x000a~0x000b 是 0x1A01, 表示这是一个水平分辨率(XResolution)(0x011A)标签,它包含了图像的水平分辨率;

      地址 0x000c~0x000d 是 0x0500,,这个值表示的格式是无符号分数(unsigned rational)(0x0005);

      地址 0x000e~0x0011 是 0x01000000,,组成元素数量是'1',无符号分数(unsigned rational)的尺寸是8字节,所有数据总长度为 1 ×8  =  8字节;

      数据总长度大于4个字节,所以接下的4个字节是数据的偏移量;

      地址0x0012~0x0015 是 0x26000000,水平分辨率(XResolution)的数据存储在0x0026;

      地址0x0026~0x0029 是 0x48000000,分子是72,地址0x002a~0x002d是0x0100000000,分母是 '1'。所以水平分辨率(XResolution)是72/1;

      地址0x0016~0x0017是0x6987,下一个标签是Exif偏移(ExifOffset)(0x8769)。它的值是Exif子IFD(Exif SubIFD)的偏移量;

      数据格式是0x0004,无符号长整型(unsigned long integer);

      这个标签有一个元素。无符号长整型(unsigned long integer)长度为4个字节,所以数据总长度为4字节;

      总数据长度等于4字节,接下的4个字节是Exif子IFD(Exif SubIFD)的偏移量;

      地址0x001e~0x0021是0x11020000,Exif子IFD(Exif SubIFD)从'0x0211'开始;

      这是最后一个目录实体,接下的4个字节表示下一个IFD的偏移量;

      地址0x0022~0x0025 是 0x40000000,下一个IFD从'0x0040'开始。

    缩略图

    Exif格式包含图像的缩略图(除了Ricoh (理光)RDC-300Z)。缩略图通常在IFD1后面。共有3种格式的缩略图:JPEG格式(JPEG 使用YCbCr),RGB TIFF格式,YcbCr TIFF 格式。现在Exif 2.1 或者更高版本是推荐使用JPEG格式和160×120的缩略图。而DCF规范则必须使用JPEG格式和160×120的缩略图。

    JPEG格式缩略图

    如果IFD1中压缩(Compression)(0x0103)标签的值为 '6 ',那么缩略图是JPEG格式。大多数的Exif图像使用JPEG格式的缩略图。在这些图像中,你可以在IFD1中JpegIFOffset(0x0201)标签中,以及JpegIFByteCount(0x0202)标签中分别获得缩略图的偏移量和大小。其数据格式为普通的JPEG格式,从0xFFD8 开始,到 0xFFD9结束。

    TIFF格式缩略图

    如果IFD1中压缩(Compression)(0x0103)标签的值为 '1 ',那么说缩略图是非压缩的(TIFF格式)。缩略图的起点数据在StripOffset(0x0111)标签,缩略图大小则是StripByteCounts(0x0117)标签的和。

    如果缩略图是无压缩的且IFD1中标签PhotometricInterpretation(0x0106)的值为'2',则缩略图采用RGB格式。在这种情况中,你可以通过那数据复制到计算机中RGB格式(如BMP格式,或者复制到VRAM目录)等简单方法查看缩略图。Kodak(柯达)DC -210/220/260 就是使用这种格式。需要说明的是,TIFF用'RGB'的顺序储存像素数据,而BMP格式采用BGR顺序。

    如果标签值为'2',那么缩略图采用YcbCr格式。如果你想查看缩略图,你必须要把它转换为RGB。Ricoh(理光)RDC4200/4300, Fuji(富士) DS-7/300 and DX-5/7/9 都是用这种格式(比较新的RDC5000/MX-X00系列使用JPEG格式)。Next section is brief description to conversion of Fuji DS's thumbnail. For more details, refer to TIFF6.0 specification.

    At DX-5/7/9, YCbCrSubsampling(0x0212) has values of '2,1', PlanarConfiguration(0x011c) has a value '1'. So the data align of this image is below.

    Y(0,0),Y(1,0),Cb(0,0),Cr(0,0), Y(2,0),Y(3,0),Cb(2,0),Cr(3.0), Y(4,0),Y(5,0),Cb(4,0),Cr(4,0). . . .

    The numeric in parenthesis is pixel coordinates. DX series' YCbCrCoefficients(0x0211) has values '0.299/0.587/0.114', ReferenceBlackWhite(0x0214) has values '0,255,128,255,128,255'. Therefore to convert from Y/Cb/Cr to RGB is;

    B(0,0)=(Cb-128)*(2-0.114*2)+Y(0,0)
    R(0,0)=(Cr-128)*(2-0.299*2)+Y(0,0)
    G(0,0)=(Y(0,0)-0.114*B(0,0)-0.299*R(0,0))/0.587

    Horizontal subsampling is a value '2', so you can calculate B(1,0)/R(1,0)/G(1,0) by using the Y(1,0) and Cr(0,0)/Cb(0,0). Repeat this conversion by value of ImageWidth(0x0100) and ImageLength(0x0101).

    Exif/TIFF 中使用的标签号

    Exif/TIFF 中使用的标签号如下所示。如果标签的元素数量有限制,则CompoNo列就是最大允许的元素个数,如果CompoNo列为空,代表没有限制。

    IFD0 中使用的标签(主图像)

    Tag No.

    标签名称

    格式

    CompoNo

    Desc.

    0x010e

    ImageDescription

    (图像描述)

    ascii string

    描述相片,不支持双字节的字符,如汉语、韩语、日语

    0x010f

    Make

    (制造商)

    ascii string

    数码相机制造商。在Exif标准中是可选的,但在DCF(数码相机格式)中是必需的。

    0x0110

    Model

    (型号)

    ascii string

    数码相机型号。在Exif标准中是可选的,但在DCF(数码相机格式)中是必需的。

    0x0112

    Orientation

    (方向)

    unsigned short

    1

    Value

    0th Row

    0th Column

    1

    top

    left side

    2

    top

    right side

    3

    bottom

    right side

    4

    bottom

    left side

    5

    left side

    top

    6

    right side

    top

    7

    right side

    bottom

    8

    left side

    bottom

    The orientation of the camera relative to the scene, when the image was captured. The relation of the '0th row' and '0th column' to visual position is shown as right.

    拍摄时的相机方向(横向还是纵向,那边朝上)。……

    0x011a

    Xresolution

    (水平分辨率)

    unsigned rational

    1

    图像显示、打印的分辨率。默认值值是每英寸72像素,但是因为个人计算机不使用这个值来显示或者打印,所以这个值没有意义。

    0x011b

    Yresolution

    (垂直分辨率)

    unsigned rational

    1

    0x0128

    ResolutionUnit

    (分辨率单位)

    unsigned short

    1

    水平或者垂直分辨率XResolution(0x011a)/YResolution(0x011b)的单位,'1''表示没有单位,'2'表示英寸,'3'表示厘米。默认为'2'。

    0x0131

    Software

    (软件)

    ascii string

    Shows firmware(internal software of digicam) version number.

    固件(数码相机内软件)版本号。

    0x0132

    DateTime

    (日期时间)

    ascii string

    20

    图像最后修改的日期时间。日期格式为"YYYY:MM:DD HH:MM:SS" + 0x00,一共20字节。如果没有设置时钟或者数码相机没有时钟,这个区域可填充空格。通常,这个标签的值与DateTimeOriginal(0x9003)的值相同。

    0x013e

    WhitePoint

    (白点)

    unsigned rational

    2

    定义了图像白点的色度。如果图像使用CIE(国际照明委员会)标准亮度D65(被认为是‘阳光’的标准)的光源,这个值为'3127/10000,3290/10000'。

    0x013f

    PrimaryChromaticities

    (原色色度)

    unsigned rational

    6

    定义了原色的色度。如果图像使用CCIR推荐709原色方案,这个值应该为'640/1000,330/1000,300/1000,600/1000,150/1000,0/1000'。

    0x0211

    YcbCrCoefficients

    (颜色空间转换矩阵系数)

    unsigned rational

    3

    当图像格式为YcbCr时,这个值包含一个与RGB格式转换的常量参数。通常,这个值为'0.299/0.587/0.114'。

    0x0213

    YcbCrPositioning

    (YcbCr配置)

    unsigned short

    1

    When image format is YCbCr and uses 'Subsampling'(cropping of chroma data, all the digicam do that), defines the chroma sample point of subsampling pixel array. '1' means the center of pixel array, '2' means the datum point.

    当图像格式为YCbCr且使用部分采样(色度数据的取样,所有数码相机都会这么做)时,定义了部分抽样像素数组的色度样本点。'1'表示像素数组的中间,'2'表示基准点。

    0x0214

    ReferenceBlackWhite

    (黑白参照值对)

    unsigned rational

    6

    Shows reference value of black point/white point. In case of YCbCr format, first 2 show black/white of Y, next 2 are Cb, last 2 are Cr. In case of RGB format, first 2 show black/white of R, next 2 are G, last 2 are B.

    黑白点参照值。在YcbCr格式的方案中,头2字节表示Y的黑白参照值,接下来的2字节是Cb的,最后2字节是Cr的。在RGB格式方案中,头2字节表示R的黑白参照值,接下来的2字节是G的,最后2字节是B的。

    0x8298

    Copyright

    (版权)

    ascii string

    Shows copyright information

    版权信息

    0x8769

    ExifOffset

    unsigned long

    1

    Offset to Exif Sub IFD

    子IFD的偏移量

    Exif SubIFD(子标签)中使用的标签

    Tag No.

    标签名称

    格式

    CompoNo

    Desc.

    0x829a

    ExposureTime

    (曝光时间)

    unsigned rational

    1

    曝光时间(快门速度的倒数)。以秒为单位。

    0x829d

    Fnumber

    (焦距)

    unsigned rational

    1

    获取图像使用的焦距(光圈)。

    0x8822

    ExposureProgram

    (曝光方式)

    unsigned short

    1

    Exposure program that the camera used when image was taken. '1' means manual control, '2' program normal, '3' aperture priority, '4' shutter priority, '5' program creative (slow program), '6' program action(high-speed program), '7' portrait mode, '8' landscape mode.

    拍摄图像时相机的曝光程序(曝光方式)。'1'表示手动控制;'2' '3'光圈优先; '4'快门优先;'5''6''7''8

    0x8827

    ISOSpeedRatings

    (ISO)

    unsigned short

    2

    CCD sensitivity equivalent to Ag-Hr film speedrate.

    0x9000

    ExifVersion

    (Exif版本)

    undefined

    4

    Exif version number. Stored as 4bytes of ASCII character. If the picture is based on Exif V2.1, value is "0210". Since the type is 'undefined', there is no NULL(0x00) for termination.

    Exif版本号。用4字节的ASCII字符保存。如果图像基于Exif v2.1,其值为"0210"。由于类型为‘未定义’,所以结尾没有NULL(0x00)值。

    0x9003

    DateTimeOriginal

    (原始图像采集的时间)

    ascii string

    20

    原始图像采集时的时间。这个值不能被用户的程序修改。时间格式为"YYYY:MM:DD HH:MM:SS" + 0x00,共20字节。如果没有设定时钟或者数码相机没有时钟,这个区域可填充空格。在Exif标准中,这个标签是可选的,但在DCF标准中时必须的。

    通常,这个标签的值与DateTimeOriginal(0x0132)的值相同。

    0x9004

    DateTimeDigitized

    (原始图像被数字化编码时的时间)

    ascii string

    20

    图像被数字化的时间。通常和DateTimeOriginal(原始图像采集的时间)(0x9003)相同。时间格式为"YYYY:MM:DD HH:MM:SS" + 0x00,共20字节。如果没有设定时钟或者数码相机没有时钟,这个区域可填充空格。在Exif标准中,这个标签是可选的,但在DCF标准中时必须的。

    0x9101

    ComponentsConfiguration

    (像素颜色构成顺序)

    undefined

    Shows the order of pixel data. Most of case '0x04,0x05,0x06,0x00' is used for RGB-format and '0x01,0x02,0x03,0x00' for YCbCr-format. 0x00:does not exist, 0x01:Y, 0x02:Cb, 0x03:Cr, 0x04:Red, 0x05:Green, 0x06:Bllue.

    像素数据种色彩的顺序。大多数都采用RGB格式为'0x04,0x05,0x06,0x00',YcbCr格式为'0x01,0x02,0x03,0x00'的方案。0x00:不存在;0x01: Y; 0x02: Cb; 0x03: Cr; 0x04: Red,;0x05: Green; 0x06: Blue.

    0x9102

    CompressedBitsPerPixel

    每个像素的压缩位

    unsigned rational

    1

    The average compression ratio of JPEG (rough estimate).

    JPEG的平均压缩率(粗略估计)。

    0x9201

    ShutterSpeedValue

    (快门速度APEX值)

    signed rational

    1

    Shutter speed by APEX value. To convert this value to ordinary 'Shutter Speed'; calculate this value's power of 2, then reciprocal. For example, if the ShutterSpeedValue is '4', shutter speed is 1/(24)=1/16 second.

    快门速度的APEX值。要来转化为平常的“快门速度”,计算方法为2的这个值为幂次方,在倒数。举例,如果ShutterSpeedValue(快门速度APEX值)为4则快门速度为1/(24)=1/16 秒。

    0x9202

    ApertureValue

    (光圈)

    unsigned rational

    1

    The actual aperture value of lens when the image was t

    获取图像时实际的光圈值。单位是APEX。要转换原始光圈,对 求这个值次幂。举例:如果ApertureValue(光圈)为'5',光圈(F-number(F-stop),)为1.41425 = F5.6。

    0x9203

    BrightnessValue

    (亮度)

    signed rational

    1

    Brightness of taken subject, unit is APEX. To calculate Exposure(Ev) from BrigtnessValue(Bv), you must add SensitivityValue(Sv).
    Ev=Bv+Sv   Sv=log2(ISOSpeedRating/3.125)
    ISO100:Sv=5, ISO200:Sv=6, ISO400:Sv=7, ISO125:Sv=5.32.

    物体的亮度,单位是APEX。曝光量(EV)等于亮度(BV )加上感光度(SV)。

    Ev=Bv+Sv   Sv=log2(ISOSpeedRating/3.125)
    ISO100:Sv=5, ISO200:Sv=6, ISO400:Sv=7, ISO125:Sv=5.32.

    0x9204

    ExposureBiasValue

    (曝光补偿)

    signed rational

    1

    Exposure bias(compensation) value of taking picture. Unit is APEX(EV).

    拍摄时的曝光补偿(EV),单位是APEX(EV)。

    0x9205

    MaxApertureValue

    (最大光圈)

    unsigned rational

    1

    Maximum aperture value of lens. You can convert to F-number by calculating power of root 2 (same process of ApertureValue:0x9202).

    镜头的最大光圈。以 为底,这个值为幂,等到的值就是焦距(计算方法同ApertureValue

    (光圈)(0x0902)一样)。

    0x9206

    SubjectDistance

    (物距)

    signed rational

    1

    Distance to focus point, unit is meter.

    到焦点的距离,单位是米。

    0x9207

    MeteringMode

    测光方式

    unsigned short

    1

    Exposure metering method. '0' means unknown, '1' average, '2' center weighted average, '3' spot, '4' multi-spot, '5' multi-segment, '6' partial, '255' other.

    测光方式。0、未知;1、平均测光;2、中心重点平均;3、单点测光;4、多点测光;5、矩阵测光;6、局部测光;255、其他。

    0x9208

    LightSource

    (光源,白平衡)

    unsigned short

    1

    光源,实际表示白平衡设置。0、未知;1、日光;2、荧光灯;3、钨丝灯;10、闪光灯;17、标准光线A;18、标准光线B;19、标准光线C;20、D55;21、D65;22、D75;255、其他。

    0x9209

    Flash

    (闪光)

    unsigned short

    1

    '0' means flash did not fire, '1' flash fired, '5' flash fired but strobe return light not detected, '7' flash fired and strobe return light detected.

    0、没有使用闪光灯;1、使用闪光灯;5、闪光但没有检测到;闪光且检测到。

    0x920a

    FocalLength

    (焦距)

    unsigned rational

    1

    Focal length of lens used to take image. Unit is millimeter.

    拍摄时焦距,单位为毫米。

    0x927c

    MakerNote

    (制造商标记)

    undefined

    Maker dependent internal data. Some of maker such as Olympus/Nikon/Sanyo etc. uses IFD format for this area.

    制造商内置数据,如奥林巴斯、尼康、三洋等。这区域使用IFD格式

    0x9286

    UserComment

    (用户注释)

    undefined

    Stores user comment. This tag allows to use two-byte character code or unicode. First 8 bytes describe the character code. 'JIS' is a Japanese character code (known as Kanji).

    储存用户注释。这个标签允许使用双字节字符或Unicode。前8个字节指示字节编码。'JIS'是日本字符编码(日本汉字)。
    '0x41,0x53,0x43,0x49,0x49,0x00,0x00,0x00':ASCII
    '0x4a,0x49,0x53,0x00,0x00,0x00,0x00,0x00':JIS
    '0x55,0x4e,0x49,0x43,0x4f,0x44,0x45,0x00':Unicode
    '0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00':Undefined

    0x9290

    SubsecTime

    (亚秒时间)

    ascii string

    Some of digicam can take 2~30 pictures per second, but DateTime/DateTimeOriginal/DateTimeDigitized tag can't record the sub-second time. SubsecTime tag is used to record it.
    For example, DateTimeOriginal = "1996:09:01 09:15:30", SubSecTimeOriginal = "130", Combined original time is "1996:09:01 09:15:30.130"

    一些数码相机可以在一秒钟内拍摄2~30张相片,但是DateTime(时间)、DateTimeOriginal(采像时间)、DateTimeDigitized(编码时间)标签都无法记录比秒更小的时间。这时可以使用SubsecTime(亚秒时间)标签来记录亚秒时间。

    例如:DateTimeOriginal(采像时间) = "1996:09:01 09:15:30",SubSecTimeOriginal(采像亚秒时间) = "130", 合并采像时间后市"1996:09:01 09:15:30.130"。

    0x9291

    SubsecTimeOriginal

    (采像亚秒时间)

    ascii string

    0x9292

    SubsecTimeDigitized

    (采像编码时间)

    ascii string

    0xa000

    FlashPixVersion

    (FlashPix版本)

    undefined

    4

    Stores FlashPix version. If the image data is based on FlashPix formar Ver.1.0, value is "0100". Since the type is 'undefined', there is no NULL(0x00) for termination.

    储存FlashPix版本。如果图像数据是基于FlashPix Ver1.0,那么这个值就是"0100"。由于类型是‘未定义’,所以结尾没有NULL(0x00)。

    0xa001

    ColorSpace

    (色彩空间)

    unsigned short

    1

    Defines Color Space. DCF image must use sRGB color space so value is always '1'. If the picture uses the other color space, value is '65535':Uncalibrated.

    定义色彩空间。DCF图像必须使用sRGB色彩空间,其值为'1'。如果图像使用其他色彩空间,其值为'65535':非标准。

    0xa002

    ExifImageWidth

    (图宽)

    unsigned short/long

    1

    Size of main image.

    主图像的尺寸。

    0xa003

    ExifImageHeight

    (图高)

    unsigned short/long

    1

    0xa004

    RelatedSoundFile

    (相关音频文件)

    ascii string

    If this digicam can record audio data with image, shows name of audio data.

    如果数码相机记录了图像的音频数据,音频数据的名称保存在这个标签。

    0xa005

    ExifInteroperabilityOffset

    unsigned long

    1

    Extension of "ExifR98", detail is unknown. This value is offset to IFD format data. Currently there are 2 directory entries, first one is Tag0x0001, value is "R98", next is Tag0x0002, value is "0100".

    "ExifR98"的扩展,细节未知。这个值IFD格式数据的偏移量。目前有两个目录实体,第一个是标签0x0001,值为"R98"。第二个是标签0x0002,值为"0100"。

    0xa20e

    FocalPlaneXResolutio

    (水平分辨率)

    unsigned rational

    1

    Pixel density at CCD's position. If you have MegaPixel digicam and take a picture by lower resolution(e.g.VGA mode), this value is re-sampled by picture resolution. In such case, FocalPlaneResolution is not same as CCD's actual resolution.

    CCD上的像素密度。如果一台百兆像素相机使用较低的分辨率(如VGA模式),此值是图像分辨率的重新取样。在一些情况中,FocalPlaneResolution(分辨率)与CCD的实际分辨率不同。

    0xa20f

    FocalPlaneYResolution

    (垂直分辨率)

    unsigned rational

    1

    0xa210

    FocalPlaneResolutionUnit

    (分辨率单位)

    unsigned short

    1

    Unit of FocalPlaneXResoluton/FocalPlaneYResolution. '1' means no-unit, '2' inch, '3' centimeter. 

    Note:Some of Fujifilm's digicam(e.g.FX2700,FX2900,Finepix4700Z/40i etc) uses value '3' so it must be 'centimeter', but it seems that they use a '8.3mm?'(1/3in.?) to their ResolutionUnit. Fuji's BUG? Finepix4900Z has been changed to use value '2' but it doesn't match to actual value also.

     

    FocalPlaneXResoluton(水平分辨率)、FocalPlaneYResolution(垂直分辨率)的单位。1、无单位;2、英寸;3、厘米。

    注意:一些富士的数码相机(例如FX2700、FX2900、Finepix4700/40i等)的值为3,所以单位是‘厘米’,但实际上使用了'8.3mm'(1/3in.?)作为其单位。这是富士相机的BUG?Finepix4900Z已改此值使用2 ,但是还是没有同实际的值相吻合。

    0xa215

    ExposureIndex

    (曝光量)

    unsigned rational

    1

    Same as ISOSpeedRatings(0x8827) but data type is unsigned rational. Only Kodak's digicam uses this tag instead of ISOSpeedRating, I don't know why(historical reason?).

    与ISOSpeedRatings(0x8827)(ISO)的值相同,但用(unsigned rational)无符号分数表示。只有柯达的数码相机使用这个标签而不用ISOSpeedRating(ISO)。

    0xa217

    SensingMethod

    (传感方式)

    unsigned short

    1

    Shows type of image sensor unit. '2' means 1 chip color area sensor, most of all digicam use this type.

    图像传感器单位类型。2表示1个彩色区域传感器芯片,大多数数码相机使用这种类型。

    0xa300

    FileSource

    (文件源)

    undefined

    1

    Indicates the image source. Value '0x03' means the image source is digital still camera.

    指出图像源。'0x03'表示图像源是数码相机。

    0xa301

    SceneType

    (场景类型)

    undefined

    1

    Indicates the type of scene. Value '0x01' means that the image was directly photographed.

    指明场景的类型。值为'0x01'表示图像时直接拍摄。

    0xa302

    CFAPattern

    undefined

    Indicates the Color filter array(CFA) geometric pattern.

    指明色彩滤镜矩阵(CFA)几何样式

    Length

    长度

    Type

    类型

    Meaning

    意义

    2

    short

    Horizontal repeat pixel unit = n

    水平重复单位像素 = n

    2

    short

    Vertical repeat pixel unit = m

    垂直重复单位像素 = m

    1

    byte

    CFA value[0,0]

    (CFA的值[0,0])

    :

    :

    :

    1

    byte

    CFA value[n-1,0]

    1

    byte

    CFA value[0,1]

    :

    :

    :

    1

    byte

    CFA value[n-1,m-1]


    The relation of filter color to CFA value is shown below.

    CFA的值表示的色彩滤镜如下表:

    Filter Color

    Red

    Green

    Blue

    Cyan

    Magenta

    Yellow

    White

    CFA value

    0

    1

    2

    3

    4

    5

    6

     

    R

    G

    G

    B

    For example, ordinary RGB filter uses the repetition of left chart, the value is '0x0002,0x0002,0x00,0x01,0x01,0x02'.

     

    距离说明:一个普通RGB滤镜使用了左图的滤镜,他的值就为:'0x0002,0x0002,0x00,0x01,0x01,0x02'。

    互用(Interoperability) IFD中使用的标签

    Tag No.

    标签名称

    格式

    CompoNo

    Desc.

    0x0001

    InteroperabilityIndex

    (互用索引)

    Ascii string

    4

    If this IFD is main image's IFD and the file content is equivalent to ExifR98 v1.0, the value is "R98". If thumbnail image's, value is "THM".

    如果这个IFD是主图像的IFD且文件内容与EixfR98 V1.0相当,那么值为"R98"。如果是缩略图的IFD,值为"THM"。

    0x0002

    InteroperabilityVersion

    (互用版本)

    Undefined

    4

    Records the interoperability version. "0100" means version 1.00.

    记录互用版本。"0100"表示V1.00。

    0x1000

    RelatedImageFileFormat

    (图像文件格式)

    Ascii string

    any

    Records the file format of image file. Value is ascii string (e.g. "Exif JPEG Ver. 2.1").

    记录图像的文件格式。值为ASCII字符串

    (例如:"Exif JPEG Ver.2.1")

    0x1001

    RelatedImageWidth

    (图像宽度)

    Short or Long

    1

    Records the image size.

    图像尺寸

    0x1001

    RelatedImageLength

    (图像高度)

    Short or Long

    1



    IFD1 (缩略图)中使用的标签

    Tag No.

    标签名称

    格式

    CompoNo

    Desc.

    0x0100

    ImageWidth

    (图像宽度)

    unsigned short/long

    1

    Shows size of thumbnail image.

    缩略图的尺寸

    0x0101

    ImageLength

    (图像高度)

    unsigned short/long

    1

    0x0102

    BitsPerSample

    (分量位数)

    unsigned short

    3

    When image format is no compression, this value shows the number of bits per component for each pixel. Usually this value is '8,8,8'

    当图像采用未压缩的格式时,这个值表示每个分量用几个字节表示。通常这个值为'8,8,8'。

    0x0103

    Compression

    (压缩)

    unsigned short

    1

    Shows compression method. '1' means no compression, '6' means JPEG compression.

    压缩方法。1、不压缩;6、JPEG压缩。

    0x0106

    PhotometricInterpretation

    (色彩空间)

    unsigned short

    1

    Shows the color space of the image data components. '1' means monochrome, '2' means RGB, '6' means YCbCr.

    图像的色彩空。1、黑白;2、RGB;6、YcbCr。

    0x0111

    StripOffsets

    unsigned short/long

    When image format is no compression, this value shows offset to image data. In some case image data is striped and this value is plural.

    当图像为非压缩格式时,这个值表示图像数据的偏移量。在一些时候,图像数据是带状存储的,这个值不止一个。

    0x0115

    SamplesPerPixel

    (每像素分量)

    unsigned short

    1

    When image format is no compression, this value shows the number of components stored for each pixel. At color image, this value is '3'.

    当图像采用未压缩格式的时候,这个值表示每个像素中的分量个数。彩色图像的值为3。

    0x0116

    RowsPerStrip

    unsigned short/long

    1

    When image format is no compression and image has stored as strip, this value shows how many rows stored to each strip. If image has not striped, this value is the same as ImageLength(0x0101).

    当图像格式是非压缩的且图像带状存储,这个值就表示每带存储多少行。如果图像不是带状存储的,这个值等于图像高度ImageLength(0x0101)。

    0x0117

    StripByteConunts

    unsigned short/long

    When image format is no compression and stored as strip, this value shows how many bytes used for each strip and this value is plural. If image has not stripped, this value is single and means whole data size of image.

    当图像未压缩并以带状存储时,这个值表示每带有多少直接且此值不止一个。如果图像不是带状存储,这个值只有一个且表示整个图像的尺寸。

    0x011a

    Xresolution

    (水平分辨率)

    unsigned rational

    1

    Display/Print resolution of image. Large number of digicam uses 1/72inch, but it has no mean because personal computer doesn't use this value to display/print out.

    图像显示或者打印的分辨率。大部分数码相机为1/72英寸,但是因为计算年不按这个值来答应和显示图像,所以此值没有意义。

    0x011b

    Yresolution

    (垂直分辨率)

    unsigned rational

    1

    0x011c

    PlanarConfiguration

    (平面配置)

    unsigned short

    1

    When image format is no compression YCbCr, this value shows byte aligns of YCbCr data. If value is '1', Y/Cb/Cr value is chunky format, contiguous for each subsampling pixel. If value is '2', Y/Cb/Cr value is separated and stored to Y plane/Cb plane/Cr plane format.

    当图像格式是不压缩的YcbCr时,这个值表示YcbCr数据的排列顺序。1表示Y/Cb/Cr是紧凑格式,一像素数据相连。2表示Y/Cb/Cr值分开存储,以Y平面、Cb平面、Cr平面存储。

    0x0128

    ResolutionUnit

    (分辨率单位)

    unsigned short

    1

    Unit of XResolution(0x011a)/YResolution(0x011b). '1' means inch, '2' means centimeter.

    分辨率(XResolution(0x011a)/YResolution(0x011b))的单位。1、英寸;2、厘米。

    0x0201

    JpegIFOffset

    (Jpeg偏移量)

    unsigned long

    1

    When image format is JPEG, this value show offset to JPEG data stored.

    当图像格式为JPEG时的JPEG数据偏移量。

    0x0202

    JpegIFByteCount

    (Jpeg数据字节数)

    unsigned long

    1

    When image format is JPEG, this value shows data size of JPEG image.

    当图像格式为JPEG时,这个值表示JPEG图像数据有多少个字节。

    0x0211

    YcbCrCoefficients

    (YcbCr系数)

    unsigned rational

    3

    When image format is YCbCr, this value shows constants to translate it to RGB format. In usual, '0.299/0.587/0.114' are used.

    当图像为YcbCr格式时,这个值表示转换为RGB时的常量参数。通常这个值为'0.299/0.587/0.114'。

    0x0212

    YcbCrSubSampling

    (YcbCr子抽样)

    unsigned short

    2

    When image format is YCbCr and uses subsampling(cropping of chroma data, all the digicam do that), this value shows how many chroma data subsampled. First value shows horizontal, next value shows vertical subsample rate.

    当图像为YcbCr格式且二次抽样(裁剪色度数据,所有的数码相机都这么做)时,这个值表示有多少色度信息被二次抽样。第一个值是水平方向的、第二个值是垂直方向的抽样率。

    0x0213

    YcbCrPositioning

    (YCbCr抽象点)

    unsigned short

    1

    When image format is YCbCr and uses 'Subsampling'(cropping of chroma data, all the digicam do that), this value defines the chroma sample point of subsampled pixel array. '1' means the center of pixel array, '2' means the datum point(0,0).

    当图像为YcbCr格式且二次抽样(裁剪色度数据,所有的数码相机都这么做)时,这个值定义了子抽样中的色度样本点在像素数组中的位置。1、像素数组中心;2、基准点(0,0)。

    0x0214

    ReferenceBlackWhite

    (黑白参照值对)

    unsigned rational

    6

    Shows reference value of black point/white point. In case of YCbCr format, first 2 show black/white of Y, next 2 are Cb, last 2 are Cr. In case of RGB format, first 2 show black/white of R, next 2 are G, last 2 are B.

    黑白点参照值。在YcbCr格式的方案中,头2字节表示Y的黑白参照值,接下来的2字节是Cb的,最后2字节是Cr的。在RGB格式方案中,头2字节表示R的黑白参照值,接下来的2字节是G的,最后2字节是B的。

    Misc Tags

    Tag No.

    Tag Name

    Format

    CompoNo

    Desc.

    0x00fe

    NewSubfileType

    unsigned long

    1

    0x00ff

    SubfileType

    unsigned short

    1

    0x012d

    TransferFunction

    unsigned short

    3

    0x013b

    Artist

    (艺术家)

    ascii string

    0x013d

    Predictor

    unsigned short

    1

    0x0142

    TileWidth

    unsigned short

    1

    0x0143

    TileLength

    unsigned short

    1

    0x0144

    TileOffsets

    unsigned long

    0x0145

    TileByteCounts

    unsigned short

    0x014a

    SubIFDs

    unsigned long

    0x015b

    JPEGTables

    undefined

    0x828d

    CFARepeatPatternDim

    unsigned short

    2

    0x828e

    CFAPattern

    unsigned byte

    0x828f

    BatteryLevel

    unsigned rational

    1

    0x83bb

    IPTC/NAA

    unsigned long

    0x8773

    InterColorProfile

    undefined

    0x8824

    SpectralSensitivity

    ascii string

    0x8825

    GPSInfo

    unsigned long

    1

    0x8828

    OECF

    undefined

    0x8829

    Interlace

    unsigned short

    1

    0x882a

    TimeZoneOffset

    signed short

    1

    0x882b

    SelfTimerMode

    unsigned short

    1

    0x920b

    FlashEnergy

    unsigned rational

    1

    0x920c

    SpatialFrequencyResponse

    undefined

    0x920d

    Noise

    undefined

    0x9211

    ImageNumber

    unsigned long

    1

    0x9212

    SecurityClassification

    ascii string

    1

    0x9213

    ImageHistory

    ascii string

    0x9214

    SubjectLocation

    unsigned short

    4

    0x9215

    ExposureIndex

    unsigned rational

    1

    0x9216

    TIFF/EPStandardID

    unsigned byte

    4

    0xa20b

    FlashEnergy

    unsigned rational

    1

    0xa20c

    SpatialFrequencyResponse

    unsigned short

    1

    0xa214

    SubjectLocation

    unsigned short

    1

  • 相关阅读:
    2016 Multi-University Training Contest 1 solutions BY HIT
    Unicode 码表
    用 lambda 表达式 对 List 进行排序
    Linux的sed命令介绍
    Linux下的NTP服务搭建
    Linux网络配置(ip命令及配置文件)
    Linux的bash脚本编程(if语句和循环语句)
    Linux新手必须掌握的命令(2)
    Linux的文件查找
    bash中的变量
  • 原文地址:https://www.cnblogs.com/zl1991/p/5191800.html
Copyright © 2020-2023  润新知