[ 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 |
'IT상식' 카테고리의 다른 글
[홈PC 호스트 설정] LGU+ 공유기 포트포워딩 안되는 이유 (6) | 2025.03.27 |
---|---|
[엑셀] 파일별로 엑셀창을 따로 열리게 하려면? (0) | 2024.10.25 |
[홈PC 호스트 설정] Windows Defender 방화벽 설정 (0) | 2024.01.02 |
[홈PC 호스트 설정] 외부 인터넷에서 내부 PC로 접속 설정하기 (0) | 2023.12.21 |
[MS 워드] 표의 아래쪽 셀이 다음 페이지로 이동 방지 (0) | 2023.09.07 |