며칠간 삽질한 것을 잊지 않으려고 적는 포스팅
jpeg 파일에서 다양한 정보를 담는 Exif영역은 IFD로 구분되고, 제일 먼저 등장하는 것이 IFD0이다.
그리고, 각 IFD와 데이터의 저장 위치는 TIFF 헤더로부터의 offset으로 위치를 표현한다.
그리고, IFD0의 offset는 당연하게도 8이다.
Exif Version 2.3
자작 프로그램들 중에 exif를 수정하는 프로그램들은 이 값을 8로 하드코딩해서 만들었다.
그런데, 이 값이 8이 아닌 jpeg 파일을 만나게 됐다.
빨간 네모로 둘러쌓인 8바이트의 0은 그야말로 잉여값
당연히 프로그램은 오류를 유발하고 exif 영역이 망가졌다.
결국 8로 하드코딩한 부분을 모두 정상적으로 읽어서 처리하도록 수정해서 문제 해결.