본문 바로가기

IT상식

TIFF 파일 구조 / Multi Tiff 파일 구조 이해하기

728x90

[ TIFF 파일 구조 ]

 

* TIFF 파일은 아래와 같이 크게 2개의 영역으로 구분되어 있다.

- 이미지 파일 헤더 (IFH : Image File Header)

- 이미지 파일 디렉토리 (IFD : Image File Directory)

 

[ 이미지 파일 해더 (IFH) 구조 ]

항목 Length 내용
바이트 순서 2 리틀 엔디안: "II" (0x49, 0x49), 빅 엔디안: "MM" 
TIFF 버전 번호 2 TIFF 포멧 식별자: 42(0x2A, 0x00) Fix
첫 번재 IFD 오프셋 4 첫 번째 IFD 오프셋 주소 (첫 번째 태그정보 시작 위치)

* 모든 TIFF 및 Multi-Tiff 파일의 헤더부는 8-byte로 고정되어 있다.

* 인텔계열 마이크로 프로세서는 리틀 엔디안 방식으로 데이터가 저장된다.

- HEX(2D 10 01) --> 0x01102D

- HEX(01 00 00) --> 0x000001

* 첫 번째 IFD 정보의 위치는 IFD의 구성 방식에 따라서 시작 위치가 일부 달라질 수 있다.

- IFD 영역 + 이미지데이터 영역 : 0x00000008로 Set
- 이미지데이터 영역 + IFD 영역 : IFD가 시작되는 위치 Set 

 

[ 이미지 파일 디렉토리 (IFD) 구조 ]

항목 세부항목 Length 내용
 태그 개수 2 IFD에 포함된 태그의 총 개수
 1 번째 태그 정보 태그 ID 2 태그 구분자 (각 코드별로 의미가 지정되어 있음)
데이터 형식 2 데이터 형식 (2:ASCII, 3:short, 4:long)
데이터 개수 4 데이터값의 개수 (데이터가 여러 쌍으로 구성된 경우 1보다 크다)
데이터 값/오프셋 4 데이터값 또는 데이터 저장위치
(값이 4byte 이하인 경우 자체가 값이다)
 2 번째 태그 정보 Package 12 태그 종류 구분자 (종류별로 고정값으로 정의되어 있음)
: :
 n 번째 태그 정보 Package 12 태그 종류 구분자 (종류별로 고정값으로 정의되어 있음)
 다음 IFD 시작위치 4 다음 IFD가 있으면 시작위치 값, 다음 IFD가 없으면 '0'

* 한 장짜리 이미지의 TIFF 파일은 IFD가 1Set로 구성되어 있음으로 다음 IFD 시작위치 값이 항상 0이다.

* 여러 장의 이미지가 포함되어 있는 Multi-Tiff 파일의 경우 IFH는 1개이지만 이미지 장수 만큼의 IFD가 구성되어 있다.

- 총 3장의 이미지가 포함된 Multi-tiff의 경우 : IFH(8) + IFD_1 + IFD_2 + IFD_3 로 구성된다

 

[ TIFF 파일 전체 구조 ]

* TIFF 파일내 영역별 배치 순서는 통상적으로 아래와 같다.

영역 내용 크기
IFH 바이트 순서 2
TIFF 버전 2
First IFD 위치 4
IFD 태그 개수 2
태그 0 12
태그 1 12
: :
태그 n 12
Next IFD 위치 4
DATA 태그 상세 데이터 n
이미지 데이터 n

 

 

* 그러나 물리적으로 각 영역이 위치하는 순서는 아래와 같이 여러 방식으로 배치되어도 파일을 인식하는데는 문제가 없다.

방식 영역 크기
IFD우선 IFH 8
IFD 2+12xn+4
Tag Data n
Image Data n
DATA우선 IFH 8
Image Data n
IFD 2+12xn+4
Tag Data n

 

[ Multi - Tiff 파일 구조 ]

주소 구분 내용 크기
0000 Header 바이트 순서 2 "II" (0x49, 0x49) 
0002 TIFF 버전 2 (0x2A, 0x00)
0004 First IFD 위치 4 "0008"
 
0008 IFD_1 태그 개수 2 (0x09, 0x00)
0010 태그 1 12  
0022 태그 2 12 "0101"
: : :  
: 태그 9 12 "0200"
: Next IFD 위치 4 "0500"
 
0101 DATA_1 태그 상세 데이터 n  
0200 이미지 데이터 n  
 
0500 IFD_2 태그 개수 2  
0502 태그 1 12  
0514 태그 2 12 "0501"
: : :  
: 태그 9 12 "0600"
: Next IFD 위치 4 "0000"
 
0501 DATA_2 태그 상세 데이터 n  
0600 이미지 데이터 n