翻译自:https://www.media.mit.edu/pia/Research/deepview/exif.html
目录
六. Tag number used by Exif/TIFF
Appendix 1: MakerNote of Olympus Digicams
一.什么是EXIF?
通俗来讲,Exif文件格式与JPEG文件格式相同。Jpeg 规范允许在JPEG 文件中插入Exif信息,exif 包含了图像的基本元数据(metadata)和缩略图信息。因此,我们可以在jpeg 文件中查看元数据信息。
二.JPEG格式和标记
JPEG 文件以二进制数据 0xFFD8 开始,以0xFFD9 结束, 有一些以0xFFXX开头的数据,我们把它们叫做Marker(标记),
0xFFD8叫做SOI(Start of image),0xFFD9叫做EOI(end of image), 这两个marker 后面没有跟任何数据,其它的Marker 后面会跟上对应的数据信息。
Marker的格式如下所示:
0xFF+Marker Number(1 byte)+Data size(2 bytes)+Data(n bytes)
Data size(2 Bytes) 要大端对齐,需要注意的是“Data”包含数据大小描述符,举例如下
FF C1 00 0C
这个Marker 的意思是 Marker(0xFFC1) 有0x000C(12)个字节的数据,但是这12个字节中包含2个字节的 data size 描述符,所以仅有10个字节用来存储数据
在JPEG 格式中,有一些Marker 用来描述数据,首先放一个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使用的Marker(标记)
0xFFE0~0xFFEF 区间范围内的叫做 Application Marker, 不需要解码JPEG图像就可以读取和设置,它们由用户应用程序使用。例如,老式的olympus/canon/casio/agfa数码相机使用JFIF(JPEG文件交换格式)存储图像。JFIF使用APP0(0xFFE0)标记插入digicam配置数据和缩略图图像。
Exif 也使用Application Marker 来插入数据,但是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的数据。第一部分是用于标识是否Exif的特殊数据,使用了ASCII字符“Exif”(45[E]78[x]69[i]66[f])和2bytes的0x00(0000)。
在APP1标记区域之后是其他的JPEG标记。
1.Exif 数据结构
Exif数据(APP1)的大致结构如下所示。这是一个“Intel”字节对齐的例子,它包含JPEG格式的缩略图。如上所述,Exif数据从ASCII字符“Exif”和2bytes的0x00开始,然后是Exif数据。Exif使用TIFF格式存储数据。
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. . . . | IFD1(thumbnail image) | Directory | |
00000000 | End of Link | ||
XXXX. . . . | Data area of IFD1 | ||
FFD8XXXX. . . XXXXFFD9 | Thumbnail image |
2.TIFFheader 数据结构
前8个字节是TIFF header, 前2个字节定义TIFF数据的字节对齐。如果它是0x4949=“I I”,它表示“Intel”类型的字节对齐。如果是0x4d4d=“MM”,表示“摩托罗拉”类型的字节对齐。
例如,值“305,419,896”被第十六系统标注为0x12345678
在motorola align上,它被存储为0x12,0x34,0x56,0x78。
如果它是Intel align,它被存储为0x78,0x56,0x34,0x12。似乎大多数数码相机都使用英特尔的align
因此,当我们使用EXIF 的时候,必须考虑数据对其的问题
接下来的2个字节总是2个字节长度的0x002A
如果数据使用Intel align,接下来的两个字节是“0x2a00”。如果它使用摩托罗拉,它们是“0x002a”
TIFF头的最后4个字节是到第一个IFD(图像文件目录,在下一章中描述)的偏移量。如果包含这个偏移量,TIFF格式中使用的所有偏移量值都计算从TIFF头的第一个开始的偏移字节("I I"或"MM")。
通常第一个IFD紧挨着TIFF头开始,所以这个偏移量的值为'0x00000008'。
Byte align | TAG Mark | Offset to first IFD |
"I I" or "MM" | 2A00 | 0x00000008 |
3.IFD : Image file directory
在TIFF头文件后面,有第一个IFD:Image文件目录。它包含图像信息数据。在下面的图表中,前2个字节('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字节)是数据格式,' nnnnnnn '(4字节)是组件数。'DDDDDDDD'(4字节)包含一个数据值或数据值的偏移量。
四. Data format
数据格式(上表中的ffff)的定义如下。“rational”是一个小数,它包含2个有符号/无符号长整数值,第一个代表分子,第二个代表分母。
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'包含该标记的值。如果它的大小超过4字节,'DDDDDDDD'包含数据存储地址的偏移量。
1.IFD data structure
在Exif格式下,第一个IFD是IFD0(主图像的IFD),然后它后面是IFD1(缩略图像的IFD), IFD链接终止。但IFD0/IFD1不包含任何数码相机的信息,如快门速度、焦距等。IFD0总是包含特殊标记Exif偏移量(0x8769),它显示到Exif SubIFD的偏移量。Exif SubIFD也是IFD格式的数据,它包含digicam的信息。举例如下:
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 数据如上所示,则可以解析为如下信息:
1.前2个字节是“I I”,字节对齐是“Intel”。
2.地址0x0004~0x0007是0x08000000, IFD0从地址“0x0008”开始
3.地址0x0008~0x0009是0x0200, IFD0的目录条目数是2。
4.地址0x000a~0x000b是0x1A01,它表示这是一个XResolution(0x011A)标签,它包含一个图像的水平分辨率。
5.地址0x000c~0x000d为0x0500,该值的格式为无符号理性(0x0005)。
6.地址0x000e~0x0011为0x01000000,组件个数为“1”。无符号rational的数据大小是8字节/组件,所以总数据长度是1x8=8字节。
7.总数据长度大于4字节,因此接下来的4字节包含到数据的偏移量。
8.地址0x0012~0x0015为0x26000000, XResolution数据存储到地址0x0026
9.地址0x0026~0x0029为0x48000000,分子72,地址0x002a~0x002d为0x0100000000,分母为“1”。所以xresolution的值是72/1。
10.Address0x0016~0x0017是0x6987,下一个标签是ExifOffset(0x8769)。它的值是对Exif SubIFD的偏移量
11.数据格式为0x0004,无符号长整数。
12.这个标记有一个组件。Unsigned long integer的数据大小是4字节/组件,所以总数据大小是4字节
13.总数据大小等于4个字节,接下来的4个字节包含Exif subbifd偏移量的值。
14.地址0x001e~0x0021是0x11020000, Exif SubIFD从地址“0x0211”开始。
15.这是最后一个目录条目,下一个4字节显示到下一个IFD的偏移量。
16.地址0x0022~0x0025是0x40000000,下一个IFD从地址“0x0040”开始
五. Thumbnail image(缩略图)
Exif 格式包含缩略图信息,通常缩略图紧跟IFD1标记,有三种类型的缩略图分别是:
- JPEG 格式(用YCbCr)
- RGB TIFF格式
- YCbCr TIFF 格式
1.JPEG 格式缩略图
如果IFD1中的Compression(0x0103)标签的值为“6”,则缩略图图像格式为JPEG。大多数Exif图像使用JPEG格式的缩略图。在这种情况下,您可以通过IFD1中的JpegIFOffset(0x0201)标记获得缩略图的偏移量,通过JpegIFByteCount(0x0202)标记获得缩略图的大小。数据格式为普通JPEG格式,从0xFFD8开始,到0xFFD9结束。对于Exif2.1或更高版本,建议使用JPEG格式和160x120像素大小的缩略图格式。
2.TIFF 格式缩略图
如果IFD1中的Compression(0x0103)标签的值为“1”,则缩略图图像格式为no Compression(称为TIFF图像,无压缩)。缩略图数据的起始点是StripOffset(0x0111)标签,缩略图的大小是StripByteCounts(0x0117)标签的和。
如果缩略图没有使用压缩,并且IFD1中的PhotometricInterpretation(0x0106)标签值为2,缩略图使用RGB格式。在这种情况下,您可以通过简单地将数据复制到计算机的RGB格式(如BMP格式,或复制到VRAM目录)来查看缩略图图像。柯达DC-210/220/260使用这个格式。
如果IFD1中的Compression(0x0103)标签的值为'6',thumbnail使用YCbCr格式。如果你想看到缩略图,你必须把它转换成RGB。
六. Tag number used by Exif/TIFF
Exif/TIFF使用的标记号如下所示。如果标签有组件数上限,CompoNo列有数值。如果它没有数值,就没有限制。
Tags used by IFD0 (main image) | ||||
Tag No. | Tag Name | Format | CompoNo | Desc. |
0x010e | ImageDescription | ascii string | Describes image | |
0x010f | Make | ascii string | Shows manufacturer of digicam | |
0x0110 | Model | ascii string | Shows model number of digicam | |
0x0112 | Orientation | unsigned short | 1 | The orientation of the camera relative to the scene, when the image was captured. The start point of stored data is, '1' means upper left, '3' lower right, '6' upper right, '8' lower left, '9' undefined. |
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. |
0x011b | YResolution | unsigned rational | 1 | |
0x0128 | ResolutionUnit | unsigned short | 1 | Unit of XResolution(0x011a)/YResolution(0x011b). '1' means no-unit, '2' means inch, '3' means centimeter. |
0x0131 | Software | ascii string | Shows firmware(internal software of digicam) version number. | |
0x0132 | DateTime | ascii string | 20 | Date/Time of image was last modified. Data format is "YYYY:MM:DD HH:MM:SS"+0x00, total 20bytes. In usual, it has the same value of DateTimeOriginal(0x9003) |
0x013e | WhitePoint | unsigned rational | 2 | Defines chromaticity of white point of the image. If the image uses CIE Standard Illumination D65(known as international standard of 'daylight'), the values are '3127/10000,3290/10000'. |
0x013f | PrimaryChromaticities | unsigned rational | 6 | Defines chromaticity of the primaries of the image. If the image uses CCIR Recommendation 709 primearies, values are '640/1000,330/1000,300/1000,600/1000,150/1000,0/1000'. |
0x0211 | YCbCrCoefficients | unsigned rational | 3 | When image format is YCbCr, this value shows a constant to translate it to RGB format. In usual, values are '0.299/0.587/0.114'. |
0x0213 | YCbCrPositioning | 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. |
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. |
0x8298 | Copyright | ascii string | Shows copyright information | |
0x8769 | ExifOffset | unsigned long | 1 | Offset to Exif Sub IFD |
Tags used by Exif SubIFD | ||||
Tag No. | Tag Name | Format | CompoNo | Desc. |
0x829a | ExposureTime | unsigned rational | 1 | Exposure time (reciprocal of shutter speed). Unit is second. |
0x829d | FNumber | unsigned rational | 1 | The actual F-number(F-stop) of lens when the image was taken. |
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. |
0x8827 | ISOSpeedRatings | unsigned short | 2 | CCD sensitivity equivalent to Ag-Hr film speedrate. |
0x9000 | ExifVersion | undefined | 4 | Exif version number. Stored as 4bytes of ASCII character (like "0210") |
0x9003 | DateTimeOriginal | ascii string | 20 | Date/Time of original image taken. This value should not be modified by user program. |
0x9004 | DateTimeDigitized | ascii string | 20 | Date/Time of image digitized. Usually, it contains the same value of DateTimeOriginal(0x9003). |
0x9101 | ComponentConfiguration | undefined | Unknown. It seems value 0x00,0x01,0x02,0x03 always. | |
0x9102 | CompressedBitsPerPixel | unsigned rational | 1 | The average compression ratio of JPEG. |
0x9201 | ShutterSpeedValue | signed rational | 1 | Shutter speed. To convert this value to ordinary 'Shutter Speed'; calculate this value's power of 2, then reciprocal. For example, if value is '4', shutter speed is 1/(2^4)=1/16 second. |
0x9202 | ApertureValue | unsigned rational | 1 | The actual aperture value of lens when the image was taken. To convert this value to ordinary F-number(F-stop), calculate this value's power of root 2 (=1.4142). For example, if value is '5', F-number is 1.4142^5 = F5.6. |
0x9203 | BrightnessValue | signed rational | 1 | Brightness of taken subject, unit is EV. |
0x9204 | ExposureBiasValue | signed rational | 1 | Exposure bias value of taking picture. Unit is 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). |
0x9206 | SubjectDistance | signed rational | 1 | Distance to focus point, unit is meter. |
0x9207 | MeteringMode | unsigned short | 1 | Exposure metering method. '1' means average, '2' center weighted average, '3' spot, '4' multi-spot, '5' multi-segment. |
0x9208 | LightSource | unsigned short | 1 | Light source, actually this means white balance setting. '0' means auto, '1' daylight, '2' fluorescent, '3' tungsten, '10' flash. |
0x9209 | Flash | unsigned short | 1 | '1' means flash was used, '0' means not used. |
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. | |
0x9286 | UserComment | undefined | Stores user comment. | |
0xa000 | FlashPixVersion | undefined | 4 | Stores FlashPix version. Unknown but 4bytes of ASCII characters "0100"exists. |
0xa001 | ColorSpace | unsigned short | 1 | Unknown, value is '1'. |
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". |
0xa20e | FocalPlaneXResolution | unsigned rational | 1 | CCD's pixel density. |
0xa20f | FocalPlaneYResolution | unsigned rational | 1 | |
0xa210 | FocalPlaneResolutionUnit | unsigned short | 1 | Unit of FocalPlaneXResoluton/FocalPlaneYResolution. '1' means no-unit, '2' inch, '3' centimeter. |
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. |
0xa300 | FileSource | undefined | 1 | Unknown but value is '3'. |
0xa301 | SceneType | undefined | 1 | Unknown but value is '1'. |
Tags used by IFD1 (thumbnail image) | ||||
Tag No. | Tag Name | Format | 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' |
0x0103 | Compression | unsigned short | 1 | Shows compression method. '1' means no compression, '6' means JPEG compression. |
0x0106 | PhotometricInterpretation | unsigned short | 1 | Shows the color space of the image data components. '1' means monochrome, '2' means RGB, '6' means 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'. |
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). |
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. |
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. |
0x0128 | ResolutionUnit | unsigned short | 1 | Unit of XResolution(0x011a)/YResolution(0x011b). '1' means inch, '2' means centimeter. |
0x0201 | JpegIFOffset | unsigned long | 1 | When image format is JPEG, this value show offset to JPEG data stored. |
0x0202 | JpegIFByteCount | unsigned long | 1 | When image format is JPEG, this value shows data size of JPEG image. |
0x0211 | YCbCrCoefficients | 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. |
0x0212 | YCbCrSubSampling | 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. |
0x0213 | YCbCrPositioning | 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). |
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. |
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 | |
0x9290 | SubSecTime | ascii string | ||
0x9291 | SubSecTimeOriginal | ascii string | ||
0x9292 | SubSecTimeDigitized | ascii string | ||
0xa20b | FlashEnergy | unsigned rational | 1 | |
0xa20c | SpatialFrequencyResponse | unsigned short | 1 | |
0xa214 | SubjectLocation | unsigned short | 1 | |
0xa215 | ExposureIndex | unsigned rational | 1 | |
0xa302 | CFAPattern | undefined | 1 |
最后,不同的厂商也会定义自己的metadata ,但这些数据都是存储在MakerNotes里面的。
Appendix 1: MakerNote of Olympus Digicams
下面是一段奥林巴斯的自定义数据信息:
MakerNote of Olympus Digicam starts from ASCII string "OLYMP". Data format is the same as IFD, it starts from offset 0x07. Example of actual data structure is shown below.
:0000: 4F 4C 59 4D 50 00 01 00 0B-00 00 02 04 00 03 00 OLYMP...........
:0010: 00 00 0E 04 00 00 01 02 03-00 01 00 00 00 03 00 ................
Tag No. | Tag Name | Format | CompoNo | Value |
0x0200 | SpecialMode | Unsigned Long | 3 | Shows picture taking mode. First value means 0=normal, 1=unknown, 2=fast, 3=panorama. Second value means sequence number, third value means panorama direction, 1=left to right, 2=right to left, 3=bottom to top, 4=top to bottom. |
0x0201 | JpegQual | Unsigned Short | 1 | Shows JPEG quality. 1=SQ,2=HQ,3=SHQ. |
0x0202 | Macro | Unsigned Short | 1 | Shows Macro mode or not. 0=normal, 1=macro. |
0x0203 | Unknown | Unsigned Short | 1 | Unknown |
0x0204 | DigiZoom | Unsigned Rational | 1 | Shows Digital Zoom ratio. 0=normal, 2=digital 2x zoom. |
0x0205 | Unknown | Unsigned Rational | 1 | Unknown |
0x0206 | Unknown | Signed Short | 6 | Unknown |
0x0207 | SoftwareRelease | Ascii string | 5 | Shows Firmware version. |
0x0208 | PictInfo | Ascii string | 52 | Contains ASCII format data such as [PctureInfo]. This is the same data format of older Olympus digicams which not used Exif data format (C1400/C820/D620/D340 etc). |
0x0209 | CameraID | Undefined | 32 | Contains CameraID data, which is user changeable by some utilities |
0x0f00 | DataDump | Unsigned Long | 30 | Unknown |