상세 컨텐츠

본문 제목

EXIF Format

멀티미디어/이미지(Image)

by cepiloth 2016. 1. 26. 09:45

본문

728x90
반응형



 많은 디지털 카메라는 파일을 저장하면서 Exif 포맷을 사용한다. 이 명세는 JEIDA에서 제정되었으나 인터넷상에 공개된 문서는 없다. 그래서 인터넷에서 구할 수 있는 공개 문서를 기본으로 간단한 Exif명세를 작성해 보았다. 


추가: PIMA의 웹사이트에서 Exif2.1의 공식 문서를 받을 수 있다. ISO는 DCF(Design rule for Camera File system) 명세를 작성중이다. 디카 제조사들은 DCF를 사용하도록 바뀌어가고 있으며, 그들의 새로운 디카들은 이미 DCF를 사용하고 있다. 이 문서는 Exif2.1/DCF문서에 기초하였으며, 만약 'unknown' 항목에 대해 정보가 있으면 e-mail을 보내주시기 바랍니다.

(TsuruZoh Tachibanaya , t s u r u z o h @ b a . w a k w a k . c o m )

이 문서의 전체 혹은 부분은 상업적/비상업적 사용상에 제한이 없습니다. 이 문서에 나오는 모든 등록 상표는 해당 회사의 등록 상표입니다. 


참고목록


기본적으로, Exif파일 포맷은 JPEG파일 포맷과 동일하다. Exif는 JPEG포맷에 호환되도록 이미지/디지털카메라의 정보와 썸네일을 JPEG파일에 추가한다. 따라서, Exif포맷의 이미지 역시 JPEG와 마찬가지로 JPEG에 호환성이 있는 인터넷 브라우저, 이미지 뷰어, 사진 리터칭 프로그램 등에서 볼 수 있다.

모든 JPEG파일은 0xFFD8 으로 시작하고, 0xFFD9로 끝난다. JPEG데이터에는 여러개의 0xFFXX 데이터가 있으며, 이들은 "Marker"로 불린다. 0xFFD8은 SOI(Start of image)이고, 0xFFD9는 EOI(End of image)이다. 이 두개의 지정된 마커는 뒤따르는 데이터는 없으며, 다른 마커들은 데이터를 포함하고 있다. 마커의 기본적인 구조는 아래와 같다.

0xFF+Marker 번호(1 byte)+Data size(2 bytes)+Data(n bytes)

Data size(2 Bytes)는 "Motorola" byte 순서를 따른다. 알아두어야 할 점은 "Data"는 Data size 부분을 포함한다. 예를들어, 아래와 같은 데이터가 있다면;

FF C1 00 0C

이 마커(0xFFC1)는 0x000C(=12)바이트의 데이터를 가지고 있으며, 이 값에는 "데이터 크기" 영역이 포함되어 있으므로, 0x000C 뒤로 10바이트의 데이터가 존재하는 것이다.

In JPEG format, some of Markers describe data, then SOS(Start of stream) Marker placed. After the SOS marker, JPEG image stream starts and terminated by EOI Marker.

SOI MarkerMarker XX size=SSSSMarker YY size=TTTTSOS Marker size=UUUUImage streamEOI Marker
FFD8FFXXSSSSDDDD......FFYYTTTTDDDD......FFDAUUUUDDDD....I I I I....FFD9




 0xFFE0부터 0xFFEF는 "Application Marker"로 명명되어 있으며, 이는 JPEG 이미지를 디코딩하는데 필요하지 않다. 예를 들어, 구형 올림푸스/캐논/카시오/아그파 디지털 카메라는 이미지를 저장하는데 JFIF(JPEG File Interchange Format)를 사용하며, 이 포맷은 디지털카메라 정보와 썸네일 이미지를 저장하는데 APP0 마커를 사용한다.

Exif역시 데이터를 저장하는데 Application Marker를 사용하며, JFIF포맷과의 충돌을 피하기 위해 APP1(0xFFE1) 마커를 사용한다. 모든 Exif 파일 포맷은 이 포맷으로 시작한다.

SOI MarkerAPP1 MarkerAPP1 DataOther Marker
FFD8FFE1SSSS 457869660000 TTTT......FFXX SSSS DDDD......

 SOI(0xFFD8)마커로 시작하므로 JPEG파일임을 알 수 있으며 그 뒤로 바로 APP1 마커가 뒤따른다. 모든 Exif데이터는 이 APP1 마커 영역에 저장되어 있다. 위 테이블의 "SSSS"는 APP1 데이터 영역의 크기를 나타내며, 이 "SSSS"는 자기 자신도 전체 크기에 포함시킨다는것임에 주의해야 한다.

"SSSS"다음으로, APP1 데이터가 시작된다. 첫번째 부분은 이 데이터가 Exif데이터가 맞는지를 판단하기 위한 부분이며 ASCII문자로 "Exif"과 두개의 0x00이 뒤따른다.

APP1 마커 영역이 끝나면 다른 JPEG 마커가 뒤따른다. 

역자 주 : PHP에서는 getimagesize()로 IPTC정보를 받아온 다음 "APP1" 영역으로 접근하면 Exif....로 시작하는 부분을 바로 받아올 수 있습니다. 단순히 exif데이터만 필요하다면 exif_read_data()함수를 쓰시면 됩니다. 

개략적인 Exif 데이터(APP1)의 구조는 아래와 같다. 아래의 구조는 "Intel" 바이트 오더이며, JPEG 썸네일을 포함하고 있다. 위에서 언급하였듯이 Exif데이터는 ASCII문자 "Exif"로 시작하며 2바이트의 0x00, 그리고 Exif데이터가 뒤따르게 된다. Exif는 데이터를 저장하기 위해 TIFF포맷을 사용한다. TIFF포맷에 대한 자세한 내용은 "TIFF6.0 specification"를 참고하기 바란다..

FFE1APP1 Marker
SSSSAPP1 DataAPP1 Data Size
45786966 0000Exif Header
49492A00 08000000TIFF Header
XXXX. . . .IFD0 (main image)Directory
LLLLLLLLLink to IFD1
XXXX. . . .Data area of IFD0
XXXX. . . .  Exif SubIFDDirectory
00000000End of Link
XXXX. . . .Data area of Exif SubIFD
XXXX. . . .  Interoperability IFDDirectory
00000000End of Link
XXXX. . . .Data area of Interoperability IFD
XXXX. . . .Makernote IFDDirectory
00000000End of Link
XXXX. . . .Data area of Makernote IFD
XXXX. . . .IFD1(thumbnail image)Directory
00000000End of Link
XXXX. . . .Data area of IFD1
FFD8XXXX. . . XXXXFFD9Thumbnail image


TIFF헤더의 구조

TIFF포맷의 첫 8바이트는 TIFF 헤더이다. 처음의 2바이트는 데이터의 바이트 오더를 나타낸다. 만약 이 값이 0x4949="I I"이면 이는 "Intel" 형태의 바이트 오더이며, 이 값이 0x4d4d="MM"이면, "Motorola" 형태의 바이트 오더이다. 예를 들어, 10진수 '305,419,896'값은 16진수로 0x12345678로 표현할 수 있다. Motorola 오더로는 이 값은 0x12, 0x34, 0x56, 0x78로 저장되며, Intel 오더로는 0x78, 0x56, 0x34, 0x12순서로 저장된다. 대부분의 디지털 카메라는 Intel 오더를 사용하고 있는 것으로 보이나, 리코는 Motorola 오더를 사용한다. 소니는 D700을 제외하고는 Intel 오더를 사용한다. 코닥 DC200/210/240은 Motorola 오더를 사용하지만 DC220/260은 PowerPC를 사용하므로 Intel 오더를 사용한다. 따라서, 매번 Exif를 읽을 때마다 바이트 오더를 꼭 확인해야 한다. JPEG데이터는 Motorola 오더만 사용하지만 Exif는 두가지 오더의 사용을 허용한다. Exif는 왜 Motorola 오더를 사용하도록 규정하지 않는지 모르겠다.

다음 2바이트는 0x002A이다. Intel오더를 사용한다면 다음 2바이트는 "0x2a,0x00"가 될 것이며, Motorola 오더를 사용한다면 "0x00,0x2a"가 될 것이다. 마지막 4바이트는 첫번째 IFD(Image File Directory, 다음 챕터에서 설명)의 주소를 가리킨다. TIFF에서 사용되는 주소값은 TIFF헤더의 처음("I I" or "MM")을 기준으로 한다. 보통은 IFD는 TIFF헤더 바로 뒤에 위치하므로 이 값은 0x00000008이다.
역자 주 : 인텔 오더, 모토로라 오더는 흔히 말하는 Big-Endian, Little-Endian입니다.

Byte alignTAG MarkOffset to first IFD
"I I" or "MM"0x002a0x00000008


IFD : Image file directory

TIFF헤더 다음으로는 첫번째 IFD:Image File Directory이다. 이미지 정보를 담고 있으며, 아래 표에서 보듯이, 첫번째 2바이트('EEEE')는 이 IFD에 담고 있는 directory entry의 갯수이며, 이어서 디렉토리 엔트리(각 엔트리별 12바이트)가 뒤따르게 된다. 마지막 디렉토리 엔트리 다음으로는 4바이트 값(표에서 'LLLLLLLL')이 뒤따르게 되며 이 값은 다음 IFD의 주소값이다. 만약 이 값이 0x00000000이면 현재 IFD가 마지막 IFD임을 의미한다.

EEEENo. of directory entry
TTTTffffNNNNNNNNDDDDDDDDEntry 0
TTTTffffNNNNNNNNDDDDDDDDEntry 1
. . . . . . . . .. . . . . .
TTTTffffNNNNNNNNDDDDDDDDEntry EEEE-1
LLLLLLLLOffset to next IFD

위 표에서 'TTTT'(2바이트)는 태그 번호이며, 이는 어떤 데이터인지 나타낸다. 'ffff'(2바이트)는 데이터형이며, 'NNNNNNNN'(4바이트)는 컴포넌트의 갯수이다. 'DDDDDDDD'(4바이트)는 직접적인 데이터를 담고 있거나 데이터의 주소를 가리킨다.

Data format

데이터형(위 표의 'ffff')는 아래와 같이 정의되어 있으며, "rational"은 분수값을 의미한다. 이 값은 두개의 signed/unsigned long integer값을 가지며 첫번째 값은 분자, 두번째 값은 분모가 된다. 
Value123456
Formatunsigned byteascii stringsunsigned shortunsigned longunsigned rationalsigned byte
Bytes/component112481
 
Value789101112
Formatundefinedsigned shortsigned longsigned rationalsingle floatdouble float
Bytes/component124848

위 표에서 'bytes/components'값과 'NNNNNNNN'부분의 컴포넌트 갯수를 곱하여 전체 데이터 크기를 알 수 있다. 이 값이 4바이트보다 작으면 'DDDDDDDD'부분은 태그의 값을 저장하고 있으며, 4바이트보다 큰 경우에는 'DDDDDDDD'부분은 실제 데이터의 주소를 나타낸다. 

IFD data structure

Exif포맷에서 첫번째 IFD는 IFD0(본 이미지의 IFD)이며, IFD1(썸네일 이미지의 IFD)로 이어지고 IFD는 끝난다. 하지만 IFD0/IFD1은 디지털카메라의 어떤 정보(셔터스피드, 초점거리 등)도 가지고 있지 않다. IFD0은 항상 Exif Offset (0x8769)의 태그값을 가지며, 이는 Exif SubIFD의 주소값을 나타낸다. Exif SubIFD는 IFD포맷이며, 디지털 카메라의 정보를 담고 있다.

확장된 Exif포맷 (Exif2.1/DCF)의 경우에는 Exif SubIFD는 Exif Interoperability Offset (0xa005)라는 태그값을 가지며 Interoperability IFD로의 주소를 담고 있다. DCF명세에 따르면, 이 태그는 필수적이며 SubIFD와 IFD1에 모두 있어야 하나, 일반적으로는 IFD0(SubIFD)에만 포함하고 있다.

그리고, 몇몇의 디지털 카메라는 Makernote(제조사 고유 매직넘버, 즉, 제조사 자체 정보 영역)에 IFD 데이터 포맷을 사용하며 IFD포맷임을 판별하기가 쉽지 않다. 프로그램을 작성할때 유의해야 하며, Makernote에 대해서는 Appendix부분을 참고하라. 
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데이터가 위와 같다면 아래와 같이 해석할 수 있다;
  • 첫 2바이트는 "I I"이고, 'Intel' 바이트 오더이다.
  • Address 0x0004~0x0007 is 0x08000000, IFD0은 주소 0x0008에서부터 시작된다.
  • Address 0x0008~0x0009 is 0x0200, IFD0의 디렉토리 엔트리 개수는 2개이다.
  • Address 0x000a~0x000b is 0x1A01, 이 태그는 가로 해상도(XResolution, 0x011A) 태그이다.
  • Address 0x000c~0x000d is 0x0500, 이 태그의 값은 unsigned rational(0x0005)이다.
  • Address 0x000e~0x0011 is 0x01000000, 컴포넌트의 개수는 1이다. unsigned rational의 데이터 크기는 8bytes/components이므로 전체 데이터 크기는 1*8=8바이트가 된다.
  • 전체 데이터의 크기가 4바이트보다 크므로, 다음 4바이트는 데이터의 주소를 가리킨다.
  • Address 0x0012~0x0015 is 0x26000000, 가로해상도 데이터는 0x0026주소에 위치한다.
  • Address 0x0026~0x0029 is 0x48000000, 분자는 72, 0x002a~0x002d주소의 값은 0x0100000000, 분자는 '1'이다. 즉, 가로 해상도 값은 72/1 이다.
  • Address 0x0016~0x0017 is 0x6987, 다음 태그는 ExifOffset(0x8769)이다. 이 값은 Exif SubIFD의 주소이다.
  • 데이터형은 0x0004, unsigned long integer이다.
  • 이 값은 하나의 컴포넌트를 갖고 있으며, unsigned long integer의 크기는 4bytes/components 이므로 전체 데이터 크기는 4바이트가 된다.
  • 전체 데이터 크기가 4바이트이므로, 다음 4바이트는 Exif SubIFD의 주소를 직접 담고 있다.
  • Address 0x001e~0x0021 is 0x11020000, Exif SubIFD는 0x0211 주소부터 시작된다.
  • 마지막 디렉토리 엔트리이며, 다음 4바이트는 다음 IFD의 주소를 담고 있다.
  • Address 0x0022~0x0025 is 0x40000000, 다음 IFD는 0x0040주소에 위치하고 있다.

Thumbnail image

Exif 포맷은 썸네일 이미지를 포함한다 (리코 RDC-300Z 제외). 보통 IFD1 다음에 위치하며 3가지 포맷이 있다 : JPEG(YCbCr JPEG), RGB TIFF, YCbCr TIFF. Exif2.1 이후 버전에서는 JPEG의 160x120 이미지가 권장되는듯 하며, DCF명세 상에서는 썸네일 이미지는 반드시 JPEG포맷의 160x120 크기여야 한다.

JPEG format thumbnail

IFD1의 Compression(0x0103)태그 값이 '6'이면 썸네일 이미지는 JPEG포맷이다. 대부분의 Exif 이미지는 JPEG포맷의 썸네일을 사용한다. 이 경우, IFD1의 JpegIFOffset태그의 값을 통해 썸네일의 주소값을, JpegIFByteCount(0x0202)태그를 통해 썸네일의 크기를 받아올 수 있다. 실 데이터는 0xFFD8로 시작하고 0xFFD9로 끝나는 일반적인 JPEG포맷이다.

TIFF format thumbnail

IFD1의 Compression(0x0103)태그 값이 '1'이면 썸네일 이미지는 무압축(TIFF) 이미지이다. 썸네일 이미지의 시작 주소는 StripOffset(0x0111)태그에서, 썸네일의 크기는 StripByteCounts(0x0117)태그의 값으로 받아올 수 있다.

만약 썸네일이 무압축이고, IFD1의 PhotometricInterpretation(0x0106)태그 값이 '2'이면, 썸네일은 RGB포맷을 사용한다. 이 경우, 단순히 RGB포맷(BMP나 메모리)으로 복사하는 것만으로 볼 수 있다. 코닥 DC-210/220/260이 이 포맷을 사용한다. 유의할점은 TIFF는 픽셀을 RGB순으로 저장하지만 BMP는 BGR순서로 저장한다.
이 태그 값이 '6'이면 썸네일은 YCbCr 포맷을 사용하는 것이다. 썸네일을 보려면 RGB포맷으로 변환해야 한다. 리코 RDC4200/4300, 후지 DS-7/300, DX-5/7/9가 이 포맷을 사용한다(나중에 나온 RDC5000/MX-X00시리즈는 JPEG를 사용한다). 다음은 후지 DS의 썸네일 변환에 대해 설명하고 있다. 더 자세한 내용은 TIFF6.0 specification을 참고하라.

DX-5/7/9에서, YCbCrSubsampling(0x0212)값이 '2,1', PlanarConfiguration(0x011c)값이 '1'이면 데이터 순서는 다음과 같다.

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). . . .

괄호 안의 숫자는 픽셀의 좌표이다. DX시리즈의 YCbCrCoefficients(0x0211)의 값이 '0.299/0.587/0.114'이고, ReferenceBlackWhite(0x0214)의 값이 '0.255,128,255,128,255'라면 Y/Cb/Cr에서 RGB변환은 다음과 같다.

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

수평 subsampling 값이 '2'이면, B(1,0)/R(1,0)/G(1,)은 Y(1,0)/Cr(0,0)/Cb(0,0)을 통해서 계산될 수 있다. 이 변환작업을 ImageWidth(0x0100)과 ImageLength(0x0101)동안 반복해주면 된다.

Tag number used by Exif/TIFF

Exif/TIFF에서 사용되는 태그는 아래와 같다. 태그의 컴포넌트 개수에 최대값 제한이 있다면 CompoNo열에 표시되어 있으며, 이 값이 없으면 개수 제한은 없다.

Tags used by IFD0 (main image)
Tag No.Tag NameFormatCompoNoDesc.
0x010eImageDescriptionascii string 이미지 설명. 중국어/한국어/일본어 등의 2바이트 문자는 사용할 수 없다.
0x010fMakeascii string 디지털 카메라의 제조사. Exif표준에서 이 항목은 선택적이나 DCF명세에서는 필수항목이다.
0x0110Modelascii string 디지털 카메라의 모델명. Exif표준에서 이 항목은 선택적이나 DCF명세에서는 필수항목이다.
0x0112Orientationunsigned short1
Value0th Row0th Column
1topleft side
2topright side
3bottomright side
4bottomleft side
5left sidetop
6right sidetop
7right sidebottom
8left sidebottom
사진 촬영시 이미지에 상대적인 카메라의 방향.
0x011aXResolutionunsigned rational1이미지의 Display/Print 해상도. 기본 값은 1/72인치이나 PC에서는 표시/인쇄시 이 값을 사용하지 않으므로 의미는 없다.
0x011bYResolutionunsigned rational1
0x0128ResolutionUnitunsigned short1XResolution(0x011a)/YResolution(0x011b)의 단위. '1'은 단위 없음, '2':inch, '3':cm. 기본값은 '2'(inch).
0x0131Softwareascii string 펌웨어 버전
0x0132DateTimeascii string20마지막 수정 날짜/시간. "YYYY:MM:DD HH:MM:SS"+0x00, 총 20바이트. 디지털 카메라의 시계가 없거나 설정되지 않은 상태라면 이 필드는 space문자로 채워진다. 보통 DateTimeOriginal(0x9003)값과 동일하다.
0x013eWhitePointunsigned rational2이미지상의 백색 점의 색도. 이미지가 CIE Standard Illumination D65(주광-daylight)를 사용한다면 이 값은 '3127/10000,3290/10000'이다.
0x013fPrimaryChromaticitiesunsigned rational6Defines chromaticity of the primaries of the image. If the image uses CCIR Recommendation 709 primaries, values are '640/1000,330/1000,300/1000,600/1000,150/1000,0/1000'.
0x0211YCbCrCoefficientsunsigned rational3When 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'.
0x0213YCbCrPositioningunsigned short1When 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.
0x0214ReferenceBlackWhiteunsigned rational6Shows 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.
0x8298Copyrightascii string 저작권 정보
0x8769ExifOffsetunsigned long1Exif Sub IFD의 주소


Tags used by Exif SubIFD
Tag No.Tag NameFormatCompoNoDesc.
0x829aExposureTimeunsigned rational1노출 시간(셔터스피드) 단위는 초.
0x829dFNumberunsigned rational1촬영시 F-값 (조리개값)
0x8822ExposureProgramunsigned short1카메라의 촬영 모드. 1:Manual, 2:Program Normal, 3:Aperture Priority(Av-조리개우선), 4: Shutter Priority(Tv-셔터스피드우선), 5:Program Creative(Slow Program), 6:Program Action(high-speed Program), 7:Portrait Mode, 8:Landscape Mode
0x8827ISOSpeedRatingsunsigned short2ISO 감도
0x9000ExifVersionundefined4Exif 버전. 4바이트의 ASCII문자열로 저장된다. Exif2.1 = "0210". 데이터형이 undefined이므로 문자열의 끝을 알리는 0x00문자는 없다.
0x9003DateTimeOriginalascii string20촬영된 날짜/시간. 이 값은 사용자가 변경해서는 안된다. 형태는 "YYYY:MM:DD HH:MM:SS"+0x00으로, 총 20바이트이다. 디지털 카메라에 시계가 없거나 설정되지 않았으면 space문자로 채워진다. Exif표준에는 이 항목은 선택적이나 DCF에서는 필수항목이다.
0x9004DateTimeDigitizedascii string20디지털화된 날짜/시간. 보통 DateTimeOriginal(0x9003)과 같은 값이다. 형태는 "YYYY:MM:DD HH:MM:SS"+0x00으로, 총 20바이트이다. 디지털 카메라에 시계가 없거나 설정되지 않았으면 space문자로 채워진다. Exif표준에는 이 항목은 선택적이나 DCF에서는 필수항목이다.
0x9101ComponentsConfigurationundefined 픽셀 데이터의 순서. RGB:'0x04,0x05,0x06,0x00', YCbCr:'0x01,0x02,0x03,0x00'. 0x00:존재하지 않음, 0x01:Y, 0x02:Cb, 0x03:Cr, 0x04:Red, 0x05:Green, 0x06:Blue.
0x9102CompressedBitsPerPixelunsigned rational1JPEG의 압축률(근사값)
0x9201ShutterSpeedValuesigned rational1APEX단위의 셔터스피드값. 일반적인 셔터스피드 값으로 변환하기 위해서는 2승수로 계산하여 1/n으로 변환하면 된다. 예를 들어 이 값이 '4'라면 셔터스피드는 1/(24)=1/16초 이다.
0x9202ApertureValueunsigned rational1APEX단위의 F값. 일반적인 F값으로 변환하기 위해서는 √2(=1.4142)의 승수로 계산하면 된다. 예를 들어, 이 값이 '5'라면, F값은 1.41425 = F5.6이다.
0x9203BrightnessValuesigned rational1APEX단위의 밝기. 일반적인 밝기값(Bv)에서 노출값(Ev)으로 계산하기 위해서는 민감도값(SensitivityValue, Sv)값을 더해주어야 한다.
Ev=Bv+Sv   Sv=log2(ISOSpeedRating/3.125)
ISO100:Sv=5, ISO200:Sv=6, ISO400:Sv=7, ISO125:Sv=5.32.
0x9204ExposureBiasValuesigned rational1APEX단위의 노출 보정값.
0x9205MaxApertureValueunsigned rational1렌즈의 최대 밝기. F값으로 변환하기 위해서는 √2의 승수로 계산할 수 있다.(ApertureValue:0x9202 계산법과 동일).
0x9206SubjectDistancesigned rational1초점거리. 단위는 m
0x9207MeteringModeunsigned short1측광방식. 0:unknown, 1:평균, 2:중앙, 3:스팟, 4:멀티스팟, 5:멀티 세그먼트, 6:분할, 255:그 외
0x9208LightSourceunsigned short1광원. 실제적으로는 화이트밸런스 설정. 0:unknown, 1:주광, 2:형광등, 3:텅스텐, 10:플래쉬, 17:Standard light A, 18:Standard Light B, 19:Standard Light C, 20:D55, 21:D65, 22:D75, 255:그 외
0x9209Flashunsigned short10:플래쉬 발광하지 않음, 2:플래쉬 발광, 5:플래쉬 발광되었으나 반사광 감지되지 않음, 7:플래쉬 발광되고, 반사광 감지됨
0x920aFocalLengthunsigned rational1촬영시 렌즈의 초점거리. 단위는 mm
0x927cMakerNoteundefined 제조사 정의 데이터. 이 영역에서는 IFD포맷이 사용된다.
0x9286UserCommentundefined 사용자 코멘트. 이 태그는 2byte문자나 유니코드가 허용된다. 첫 8바이트는 문자코드가 저장된다. JIS는 일본어 문자 코드이다.(Kanji로 알려져 있음)
'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
0x9290SubsecTimeascii string 몇몇 디지털 카메라는 초당 2장에서 30장의 사진을 찍을 수 있으나 DateTime/DateTimeOriginal/DateTimeDigitized 태그는 밀리초를 표시하지 못하기 때문에 그 값을 저장하기 위해서 사용된다.
예를 들어, DateTimeOriginal = "1996:09:01 09:15:30", SubSecTimeOriginal = "130"이면, 실제 시간은 "1996:09:01 09:15:30.130"이 된다.
0x9291SubsecTimeOriginalascii string 
0x9292SubsecTimeDigitizedascii string 
0xa000FlashPixVersionundefined4FlashFix 버전. 버전 1.0이면 "0100"이다. 데이터형이 'undefined'이므로 마지막에 0x00은 없다.
0xa001ColorSpaceunsigned short1컬러 스페이스 지정. DCF이미지는 sRGB이므로 이 값은 항상 '1'이며, 다른 컬러 스페이스를 사용한다면 '65535':Uncalibrated 이다.
0xa002ExifImageWidthunsigned short/long1이미지 크기
0xa003ExifImageHeightunsigned short/long1
0xa004RelatedSoundFileascii string 디지털 카메라가 이미지와 연결되는 녹음기능을 지원한다면 오디오 파일명이 저장된다.
0xa005ExifInteroperabilityOffsetunsigned long1"ExifR98"의 확장. 자세한 사항은 알려지지 않았다. IFD포맷 데이터로의 주소이며, 현재 두개의 디렉토리 엔트리가 존재한다. 0x0001태그는 "R98"의 값을 가지며 다음 태그는 0x0002, "0100"의 값을 가진다.
0xa20eFocalPlaneXResolutionunsigned rational1CCD의 픽셀 밀도. 만약 메가픽셀의 디지털카메라에서 낮은 해상도의 사진(ex. VGA) 을 찍으면 이 값은 사진의 해상도로 저장된다. 이 경우 FocalPlaneResolution은 CCD의 실제 해상도와 일치하지 않는다.
0xa20fFocalPlaneYResolutionunsigned rational1
0xa210FocalPlaneResolutionUnitunsigned short1FocalPlaneXResolution/FocalPlaneYResolution의 단위. 1:단위 없음, 2:인치, 3:cm

Note:후지의 몇몇 디지털 카메라(e.g.FX2700, FX2900, Finepix4700Z/40i 등)는 이 값을 3으로 사용하며 이는 센티미터가 되어야 하나 '8.3mm?'(1/3in.?)의 단위를 사용하는것으로 보인다. 후지의 버그인가? Finepix4900Z에서 이 값은 2로 변경되었지만 여전히 실제 값과는 일치하지 않는다.
0xa215ExposureIndexunsigned rational1ISOSpeedRations(0x8827)과 같지만 이 태그의 데이터형은 unsigned rational이다. 오직 코닥의 디지털카메라만이 ISOSpeedRation태그 대신 이 값을 사용하지만 이유는 알 수 없다.
0xa217SensingMethodunsigned short1이미지 센서 유닛의 종류. 2:1-chip color area sensor. 대부분의 디지털카메라가 이 타입이다.
0xa300FileSourceundefined1이미지 소스를 나타낸다. 0x03은 이미지 소스가 디지털 스틸 카메라임을 나타낸다.
0xa301SceneTypeundefined1Scene의 타입을 나타낸다. 0x01은 직접 사진을 찍은것을 나타낸다.
0xa302CFAPatternundefined Color Filter Array(CFA) 패턴을 나타낸다.
LengthTypeMeaning
2short수평 반복 픽셀 수 = n
2short수직 반복 픽셀 수 = m
1byteCFA value[0,0]
:
:
:
1byteCFA value[n-1,0]
1byteCFA value[0,1]
:
:
:
1byteCFA value[n-1,m-1]

필터 컬러의 CFA값은 아래와 같다;
Filter ColorRedGreenBlueCyanMagentaYellowWhite
CFA value0123456

RG
GB
예를 들어, 왼쪽과 같은 일반적인 RGB필터의 반복을 쓴다면, 값은 '0x0002,0x0002,0x00,0x01,0x01,0x02'이 된다. 



Tags used by Interoperability IFD
Tag No.Tag NameFormatCompoNoDesc.
0x0001InteroperabilityIndexAscii string4이 IFD가 메인 이미지의 IFD라면 ExifR98 v1.0과 같은 "R98"이며, 썸네일의 IFD라면 값은 "THM"이 된다..
0x0002InteroperabilityVersionUndefined4interoperability 버전. "0100"은 v1.00을 나타낸다.
0x1000RelatedImageFileFormatAscii stringany이미지 파일의 파일 포맷이며 ASCII 문자열이다. (e.g. "Exif JPEG Ver. 2.1").
0x1001RelatedImageWidthShort or Long1이미지 크기
0x1001RelatedImageLengthShort or Long1



Tags used by IFD1 (thumbnail image)
Tag No.Tag NameFormatCompoNoDesc.
0x0100ImageWidthunsigned short/long1썸네일 이미지의 크기
0x0101ImageLengthunsigned short/long1
0x0102BitsPerSampleunsigned short3이미지가 무압축이면 각 컴포넌트는 각 픽셀의 비트수를 나타낸다. 보통 '8,8,8'이다.
0x0103Compressionunsigned short1압축 방식. 1:무압축, 6:JPEG
0x0106PhotometricInterpretationunsigned short1이미지 데이터의 컬러스페이스. 1:흑백, 2:RGB, 6:YCbCr
0x0111StripOffsetsunsigned short/long 무압축인 경우, 이미지 데이터의 주소를 나타낸다. In some case image data is striped and this value is plural.
0x0115SamplesPerPixelunsigned short1무압축인 경우, 각 픽셀에 저장된 컴포넌트의 갯수를 나타낸다. 컬러 이미지인 경우 이 값은 '3'이 된다.
0x0116RowsPerStripunsigned short/long1이미지가 무압축이고 스트립으로 저장되었다면, 각 스트립당 몇개의 열인지를 나타낸다. 스트립되지 않았다면 이 값은 ImageLength(0x0101)와 동일하다.
0x0117StripByteConuntsunsigned short/long 이미지가 무압축이고 스트립으로 저장되었다면, 각 스트립의 크기(bytes)이며, 값은 반복적이다. 스트립되지 않았다면 이미지 데이터 전체의 크기이다.
0x011aXResolutionunsigned rational1Display/Print 해상도. 대다수의 디지털 카메라는 1/72inch를 사용하지만 PC에서는 유효하지 않는다.
0x011bYResolutionunsigned rational1
0x011cPlanarConfigurationunsigned short1이미지가 무압축 YCbCr이라면, YCbCr데이터의 바이트 순서를 나타낸다. 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.
0x0128ResolutionUnitunsigned short1XResolution(0x011a)/YResolution(0x011b)의 단위. 1:인치, 2:cm
0x0201JpegIFOffsetunsigned long1이미지가 JPEG인 경우, JPEG데이터가 저장된 주소를 가리킨다.
0x0202JpegIFByteCountunsigned long1이미지가 JPEG인 경우, JPEG데이터의 크기를 나타낸다.
0x0211YCbCrCoefficientsunsigned rational3이미지가 YCbCr인 경우, RGB포맷으로 변환하기 위한 상수값이 있다. 보통, '0.299/0.587/0.114'이 사용된다.
0x0212YCbCrSubSamplingunsigned short2이미지 포맷이 YCbCr이고, 서브샘플링(cropping of chroma data, 모든 디지털카메라가 사용함)을 사용하는 경우, 이 값은 얼마나 많은 채도 데이터가 서브샘플링 되었는지 나타낸다. 첫번째 값은 수평, 다음 값은 수직 샘플링율이다.
0x0213YCbCrPositioningunsigned short1이미지 포맷이 YCbCr이고, 서브샘플링(cropping of chroma data, 모든 디지털카메라가 사용함), 이 값은 서브샘플링 픽셀 배열에서 채도 샘플 포인트를 나타낸다. 1:픽셀의 중간, 2:datum point(0,0)
0x0214ReferenceBlackWhiteunsigned rational6Shows 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 NameFormatCompoNoDesc.
0x00feNewSubfileTypeunsigned long1 
0x00ffSubfileTypeunsigned short1 
0x012dTransferFunctionunsigned short3 
0x013bArtistascii string  
0x013dPredictorunsigned short1 
0x0142TileWidthunsigned short1 
0x0143TileLengthunsigned short1 
0x0144TileOffsetsunsigned long  
0x0145TileByteCountsunsigned short  
0x014aSubIFDsunsigned long  
0x015bJPEGTablesundefined  
0x828dCFARepeatPatternDimunsigned short2 
0x828eCFAPatternunsigned byte  
0x828fBatteryLevelunsigned rational1 
0x83bbIPTC/NAAunsigned long  
0x8773InterColorProfileundefined  
0x8824SpectralSensitivityascii string  
0x8825GPSInfounsigned long1 
0x8828OECFundefined  
0x8829Interlaceunsigned short1 
0x882aTimeZoneOffsetsigned short1 
0x882bSelfTimerModeunsigned short1 
0x920bFlashEnergyunsigned rational1 
0x920cSpatialFrequencyResponseundefined  
0x920dNoiseundefined  
0x9211ImageNumberunsigned long1 
0x9212SecurityClassificationascii string1 
0x9213ImageHistoryascii string  
0x9214SubjectLocationunsigned short4 
0x9215ExposureIndexunsigned rational1 
0x9216TIFF/EPStandardIDunsigned byte4 
0xa20bFlashEnergyunsigned rational1 
0xa20cSpatialFrequencyResponseunsigned short1 
0xa214SubjectLocationunsigned short1 



Appendix 1: 올림푸스 디지털 카메라의 MakerNote

이 데이터는 Peter Esherick이 올림푸스 D450Z(C-920Z)에서 분석하였다.

올림푸스 디지털 카메라의 MakerNote는 ASCII 문자열 "OLYMP"로 시작한다. 데이터 포맷은 IFD와 동일하지만 주소는 0x07에서 시작한다. 예를들어 아래와 같다.
: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 NameFormatCompoNoValue
0x0200SpecialModeUnsigned Long3촬영 모드. 0:normal, 1:unknown, 2:fast, 3:panorama. 두번째 값은 순번이며, 세번째 값은 파노라마 방향이다. 1:왼쪽에서 오른쪽, 2:오른쪽에서 왼쪽, 3:아래에서 위, 4:위에서 아래
0x0201JpegQualUnsigned Short1JPEG 품질. 1=SQ,2=HQ,3=SHQ.
0x0202MacroUnsigned Short1매크로 모드 사용 여부. 0=normal, 1=macro.
0x0203UnknownUnsigned Short1Unknown
0x0204DigiZoomUnsigned Rational1디지털 줌 배율. 0=normal, 2=digital 2x zoom.
0x0205UnknownUnsigned Rational1Unknown
0x0206UnknownSigned Short6Unknown
0x0207SoftwareReleaseAscii string5펌웨어 버전
0x0208PictInfoAscii string52ASCII포맷의 데이터. 이 포맷은 Exif를 사용하지 않는 구형 올림푸스 디지털 카메라(C1400/C820/D620/D340 등)의 데이터 포맷과 같다.
0x0209CameraIDUndefined32미상의 유틸리티를 사용하여 변경할 수 있는 CameraID 데이터
0x0f00DataDumpUnsigned Long30Unknown


Appendix 2: 니콘의 MakerNote

니콘의 MakerNote는 두가지 포맷이 있다. E700/E800/E900/E900S/E910/E950의 MakerNote는 ASCII 문자열 "Nikon"로 시작한다. 데이터 포맷은 IFD와 동일하지만 주소는 0x08부터 시작한다. 이는 올림푸스 MakerNote와 ASCII문자열을 제외하고는 동일하다. 실제 구조는 아래와 같다.
:0000: 4E 69 6B 6F 6E 00 01 00-05 00 02 00 02 00 06 00 Nikon...........
:0010: 00 00 EC 02 00 00 03 00-03 00 01 00 00 00 06 00 ................

Tag No.Tag NameFormatCompoNoValue
0x0002UnknownAscii string6Unknown. E900/E900S/E910:"09.41", others:"08.00".
0x0003QualityUnsigned short1화질 설정. E900에서, 1:VGA Basic, 2:VGA Normal, 3:VGA Fine, 4:SXGA Basic, 5:SXGA Normal, 6:SXGA Fine
0x0004Color ModeUnsigned short11:Color, 2:Monochrome.
0x0005Image AdjustmentUnsigned short10:Normal, 1:Bright+, 2:Bright-, 3:Contrast+, 4:Contrast-.
0x0006CCD SensitivityUnsigned short10:ISO80, 2:ISO160, 4:ISO320, 5:ISO100
0x0007White balanceUnsigned short10:Auto, 1:Preset, 2:Daylight, 3:Incandescense, 4:Fluorescence, 5:Cloudy, 6:SpeedLight
0x0008FocusUnsigned rational1무한대 초점이라면 값은 '1/0'이다.
0x0009UnknownAscii string20Unknown
0x000aDigital ZoomUnsigned rational1'160/100'은 1.6x디지털 줌을 의미하며 '0/100'은 디지털 줌 미사용을 뜻한다.
0x000bConverterUnsigned short1어안 컨버터가 사용되었다면 '1'
0x0f00UnknownUnsigned long25~30Unknown


E990에서는 ASCII문자열이 없다. IFD(e.g. IFD0, SubIFD)와 동일하게 첫번째 바이트에서 데이터가 시작된다. 니콘 D1도 이 포맷을 사용한다. 실제 데이터는 아래 모양과 같다.
:0000: 10 00 01 00 07 00 04 00-00 00 00 01 00 00 02 00  ................
:0010: 03 00 02 00 00 00 00 00-64 00 03 00 02 00 06 00  ........d.......

아래 데이터는  Max Lyons 가 분석하였음.

Tag No.Tag NameFormatCompoNoValue
0x0001UnknownUndefined4Unknown. 항상 "0100". version?
0x0002ISO SettingUnsigned short20,100=ISO 100
0,200=ISO200
0,400=ISO400
etc.
0x0003Color ModeAscii stringvaries"COLOR", "B&W"
0x0004QualityAscii stringvaries"NORMAL", "FINE", "BASIC"
0x0005WhitebalanceAscii stringvaries"AUTO", "WHITE PRESET" etc.
0x0006Image SharpeningAscii stringvaries"AUTO", "HIGH" etc.
0x0007Focus ModeAscii stringvaries"AF-S" means Single AF, "AF-C" means Continuous AF.
0x0008Flash SettingAscii stringvaries"NORMAL", "RED-EYE" etc.
0x000aUnknownUnsigned rational1Unknown, Always '8832/1000'?
0x000fISO SelectionAscii stringvaries"MANUAL":User selected, "AUTO":Automatically selected.
0x0080Image AdjustmentAscii stringvaries"AUTO", "NORMAL", "CONTRAST(+)" etc.
0x0082AdapterAscii stringvaries"OFF", "FISHEYE 2", "WIDE ADAPTER" etc.
0x0085Manual Focus DistanceUnsigned rational1MF인 경우 초점 거리(m). 그 외는 0이다.
0x0086Digital ZoomUnsigned rational1'100/100' means no digital zoom (optical zoom only), '140/100' means 1.4x digital zoom.
0x0088AF Focus PositionUndefined4'0,0,0,0':Center, '0,1,0,0':Top, '0,2,0,0':Bottom, '0,3,0,0':Left, '0,4,0,0':right
0x0010Data DumpUndefined174Unknown.


Appendix 3: 카시오의 MakerNote


카시오는 QV2000/QV8000에서부터 Exif포맷을 사용하기 시작했다. 카시오의 MakerNote는 일반적인 IFD와 같다. 실제 데이터 구조는 아래와 같다.
:0000: 00 14 00 01 00 03 00 00-00 01 00 0A 00 00 00 02 ................
:0010: 00 03 00 00 00 01 00 03-00 00 00 03 00 03 00 00 ................
아래 데이터는  Eckhard Henkel 가 분석하였다.

Tag No.Tag NameFormatCompoNoValue
0x0001RecordingModeUnsigned Short11:Single Shutter, 2:Panorama, 3:Night Scene, 4:Portrait, 5:Landscape
0x0002QualityUnsigned Short11:Economy, 2:Normal, 3:Fine
0x0003Focusing ModeUnsigned Short12:Macro, 3:Auto Focus, 4:Manual Focus, 5:Infinity
0x0004Flash ModeUnsigned Short11:Auto, 2:On, 3:Off, 4:Red Eye Reduction
0x0005Flash IntensityUnsigned Short111:Weak, 13:Normal, 15:Strong
0x0006Object distanceUnsigned Long1Object distance in [mm]
0x0007White BalanceUnsigned Short11:Auto, 2:Tungsten, 3:Daylight, 4:Fluorescent, 5:Shade, 129:Manual
0x0008UnknownUnsigned short1Unknown
0x0009UnknownUnsigned short1Unknown
0x000aDigital ZoomUnsigned Long10x10000(65536):'Off', 0x10001(65537):'2X Digital Zoom'
0x000bSharpnessUnsigned Short10:Normal, 1:Soft, 2:Hard
0x000cContrastUnsigned Short10:Normal, 1:Low, 2:High
0x000dSaturationUnsigned Short10:Normal, 1:Low, 2:High
0x000eUnknownUnsigned short1Unknown
0x000fUnknownUnsigned short1Unknown
0x0010UnknownUnsigned short1Unknown
0x0011UnknownUnsigned long1Unknown
0x0012UnknownUnsigned short1Unknown
0x0013UnknownUnsigned short1Unknown
0x0014CCD SensitivityUnsigned short1QV3000:   64:Normal, 125:+1.0, 250:+2.0, 244:+3.0
QV8000/2000:   80:Normal, 100:High


Appendix 4: 후지의 MakerNote


후지는 MakerNote를 2000년대 모델(e.g. FinePix1400, FinePix4700)에서부터 추가하였다. IFD포맷을 사용하며 ASCII문자열 FUJIFILM으로 시작하며 다음 4바이트(0x000C)가 첫번째 IFD엔트리의 주소를 나타낸다. 실제 데이터의 구조는 아래와 같다.
:0000: 46 55 4A 49 46 49 4C 4D-0C 00 00 00 0F 00 00 00 :0000: FUJIFILM........
:0010: 07 00 04 00 00 00 30 31-33 30 00 10 02 00 08 00 :0010: ......0130......

다른 제조사와는 두가지의 큰 차이가 있다.
  • 후지의 Exif데이터는 Motorola 오더를 사용하더라도 MakerNote는 Intel 오더를 사용한다.
  • 다른 제조사는 주소값을 나타낼때 TIFF헤더의 첫번째 바이트부터 계산(다른 IFD와 마찬가지로)하나, 후지는 MakerNote자체 시작점부터 계산한다.
내 생각에는 버그인 듯 싶다. 아래 데이터는 후지 FinePix4900Z로 분석되었다.


Tag No.Tag NameFormatCompoNoValue
0x0000VersionUndefined4MakerNote의 버전. 현재는 "0130".
0x1000QualityAscii string8품질. ASCII문자열 "BASIC","NORMAL","FINE"
0x1001SharpnessUnsigned Short1Sharpness 설정. 1or2:soft, 3:normal, 4or5:hard.
0x1002White BalanceUnsigned Short1White balance setting. 0:Auto, 256:Daylight, 512:Cloudy, 768:DaylightColor-fluorescence, 769:DaywhiteColor-fluorescence, 770:White-fluorescence, 1024:Incandenscense, 3840:Custom white balance.
0x1003ColorUnsigned Short1Chroma saturation setting. 0:normal(STD), 256:High, 512:Low(ORG).
0x1004ToneUnsigned Short1Contrast setting. 0:normal(STD), 256:High(HARD), 512:Low(ORG).
0x1010Flash ModeUnsigned Short1Flash firing mode setting. 0:Auto, 1:On, 2:Off, 3:Red-eye reduction.
0x1011Flash StrengthSigned Rational1Flash firing strength compensation setting. Unit is APEX(EV) and value is -6/10, -3/10, 0/10, 3/10, 6/10 etc.
0x1020MacroUnsigned Short1Macro mode setting. 0:Off, 1:On.
0x1021Focus modeUnsigned short1Focusing mode setting. 0:Auto focus, 1:Manual focus.
0x1030SlowSync.Unsigned short1Slow synchro mode setting. 0:Off, 1:On.
0x1031Picture ModeUnsigned short1Picture mode setting. 0:Auto, 1:Portrait scene, 2:Landscape scene, 4:Sports scene, 5:Night scene, 6:Program AE, 256:Aperture prior AE, 512:Shutter prior AE, 768:Manual exposure.
0x1032unknownUnsigned Short1Unknown
0x1100ContTake/BracketUnsigned Short1연사 또는 브라케팅 설정. 0:off, 1:on.
0x1200unknownUnsigned Short1Unknown
0x1300Blur warningUnsigned Short1Blur warning status. 0:No blur warning, 1:Blur warning.
0x1301Focus warningUnsigned short1AF 경고. 0:Auto Focus good, 1:Out of focus.
0x1302AE warningUnsigned short1자동노출 경고. 0:AE good, 1:Over exposure (>1/1000s,F11).

Appendix 5: 캐논의 MakerNote

아래 데이터는 David Burren 에 의해 분석되었으며, 원본은 아래 주소에서 볼 수 있다: http://www.burren.cx/david/canon.html. 변경사항이 있다면 David에게 메일을 보내기 바란다. 
이 문서는 그의 Rev.1.11(2001/01/30)을 기본으로 하였다.

캐논의 MakerNote는 IFD 포맷을 사용한다. 시작 주소는 0이다.

아래 태그중 일부는 EOS D30에서만 작성되지만 (조사해본 바로는) 모든 캐논 디지털 카메라(A50모델 이후)에서 유효하다. 태그를 찾을 수 없거나, 여기 명시된 것보다 적다면 단지 카메라에서 지원되지 않는 것이다.

Tag No.Tag NameFormatCompoNoValue
0x0UnknownUnsigned Short6Always 0
0x1UnknownUnsigned Shortvaries
Offset within tagMeaning
0Length of tag in bytes (i.e. twice the number of shorts)
1Macro mode1: macro
2: normal
2If non-zero, length of self-timer in 10ths of a second
3unknown
4Flash mode0: flash not fired
1: auto
2: on
3: red-eye reduction
4: slow synchro
5: auto + red-eye reduction
6: on + red-eye reduction
16: external flash (not set on D30)
5Continuous drive mode0: single or timer (see field 2)
1: continuous
6unknown
7Focus Mode0: One-Shot
1: AI Servo
2: AI Focus
3: MF
4: Single (but check field 32)
5: Continuous
6: MF
8, 9unknown
10Image size0: large
1: medium
2: small
11"Easy shooting" mode0: Full Auto
1: Manual
2: Landscape
3: Fast Shutter
4: Slow Shutter
5: Night
6: B&W
7: Sepia
8: Portrait
9: Sports
10: Macro / Close-Up
11: Pan Focus
12unknown
13Contrast0xffff: low
0x0000: normal
0x0001: high
14Saturation0xffff: low
0x0000: normal
0x0001: high
15Sharpness0xffff: low
0x0000: normal
0x0001: high
16ISOIf zero, use ISOSpeedRatings EXIF tag instead
15: auto
16: 50
17: 100
18: 200
19: 400
17Metering mode3: Evaluative
4: Partial
5: Center-weighted
18unknown
19AF point selected0x3000: none (MF)
0x3001: auto-selected
0x3002: right
0x3003: center
0x3004: left
20Exposure mode0: "Easy shooting" (use field 11)
1: Program
2: Tv-priority
3: Av-priority
4: Manual
5: A-DEP
21, 22unknown
23"long" focal length of lens (in "focal units")
24"short" focal length of lens (in "focal units")
25"focal units" per mm
26 - 28unknown
29Flash detailsBits 15..0:
14: external E-TTL
13: internal flash
11: FP sync used
4: FP sync enabled
other bits unknown
30 - 31unknown
32Focus modeG1 seems to use this in preference to field 7
0: Single
1: Continuous
0x3UnknownUnsigned Short4unknown
0x4UnknownUnsigned Shortvaries
Offset within tagMeaning
0Length of tag in bytes (i.e. twice the number of shorts)
1 - 6unknown
7White balance0: auto
1: Sunny
2: Cloudy
3: Tungsten
4: Flourescent
5: Flash
6: Custom
8unknown
9Sequence number (if in a continuous burst)
10 - 13unknown
14AF point usedOnly set in One-Shot mode?
If none used, AF failed or manual focus was used (e.g. on a lens with full-time manual focus) 
Bits 15..0:
15-12: number of available focus points
2: left
1: center
0: right
15Flash bias0xffc0: -2 EV
0xffcc: -1.67 EV
0xffd0: -1.50 EV
0xffd4: -1.33 EV
0xffe0: -1 EV
0xffec: -0.67 EV
0xfff0: -0.50 EV
0xfff4: -0.33 EV
0x0000: 0 EV
0x000c: 0.33 EV
0x0010: 0.50 EV
0x0014: 0.67 EV
0x0020: 1 EV
0x002c: 1.33 EV
0x0030: 1.50 EV
0x0034: 1.67 EV
0x0040: 2 EV
16 - 18unknown
19Subject DistanceUnits are either 0.01m or 0.001m (both have been observed). Still investigating. 
In any case, the SubjectDistance EXIF tag is set by Canon cameras.
0x6Image typeAscii string32e.g.: "IMG:EOS D30 JPEG"
Has trailing whitespace.
0x7Firmware versionAscii string24May have trailing NULs and whitespace.
0x8Image NumberUnsigned Long1Normally reported as FFF-XXXX. 
FFF is this value divided by 1000, XXXX is this value mod 1000.
0x9Owner nameAscii string32May have trailing NULs and whitespace.
0xaUnknownUnsigned Shortvariesunknown
0xcCamera serial numberUnsigned Long1High 16 bits are printed as a 4-digit hex number. 
Low 16 bits are printed as a 5-digit decimal number. 
These are concatenated to form the serial number. Example printf() format string would be "%04X%05d".
0xdUnknownUnsigned Shortvariesunknown
0xfCustom FunctionsUnsigned ShortvariesFirst short is the number of bytes in the tag (i.e. twice the number of shorts) 
For each other value: the top 8 bits are the C.Fn number, and the lower 8 bits are the value.

EOS D30 Custom Functions

C.FnNameValue
1Long exposure noise reduction0: Off
1: On
2Shutter/AE-lock buttons0: AF/AE lock
1: AE lock/AF
2: AF/AF lock
3: AE+release/AE+AF
3Mirror lockup0: Disable
1: Enable
4Tv/Av and exposure level0: 1/2 stop
1: 1/3 stop
5AF-assist light0: On (auto)
1: Off
6Shutter speed in Av mode0: Automatic
1: 1/200 (fixed)
7AEB sequence/auto cancellation0: 0, -, + / Enabled
1: 0, -, + / Disabled
2: -, 0, + / Enabled
3: -, 0, + / Disabled
8Shutter curtain sync0: 1st-curtain sync
1: 2nd-curtain sync
9Lens AF stop button Fn. Switch0: AF stop
1: Operate AF
2: Lock AE and start timer
10Auto reduction of fill flash0: Enable
1: Disable
11Menu button return position0: Top
1: Previous (volatile)
2: Previous
12SET button func. when shooting0: Not assigned
1: Change quality
2: Change ISO speed
3: Select parameters
13Sensor cleaning0: Disable
1: Enable



변경 이력

rev. 1.4

  • Added Makernote of Canon
  • Added Color/Tone TAGs to Fujifilm's makernote

rev. 1.3

  • Added Exif2.1 specification
  • Added Makernote of Fujifilm

rev. 1.2

  • Added DCF specification
  • Added Interoperability IFD
  • Added Makernote of Nikon/Casio

rev. 1.1

  • Added byte align explanation to TAG Mark of TIFF header
  • Corrected data format of some TAGs to "unsigned short/long"
  • Corrected value of FocalPlaneResolutionUnit
  • Added Appendix 1: MakerNote of Olympus

rev. 1.0

  • First release

Acknowledgement

I would like to thank to;

Daniel Switkin: Byte align of TAG Mark, Format of ImageWidth/ImageLength
Peter Esherick: MakerNote of Olympus
Matthias Wandel: Value of FocalPlaneResolutionUnit
Max Lyons: Makernote of Nikon  ...His webpage
Eckhard Henkel: Makernote of Casio  ...His webpage
David Burren: FocalPlaneResolutionUnit of Fujifilm's / Makernote of Canon  ...His webpage



728x90
반응형

'멀티미디어 > 이미지(Image)' 카테고리의 다른 글

HEIF(High Efficiency Image File Format)  (0) 2018.09.04
Guetzli  (0) 2017.04.15
[IMAGE] BITMAPINFOHEADER VERSION 5  (0) 2016.01.26
BMP 블록 다이어그램  (0) 2016.01.26
BMP 포맷  (0) 2016.01.26

관련글 더보기

댓글 영역