마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ExifInterface 의 setAttribute로는 TAG_GPS_PROCESSING_METHOD는 안써지나요?

0 추천

안녕하세요?

 

다름이 아니라 ExifInterface를 이용하여 리사이즈된 이미지의 메타 데이터를 쓰던중

다른 GPS 정보는 정상적으로 써지는데 TAG_GPS_PROCESSING_METHOD 태그는 써지질 않아 문의 드립니다.

아래와 같이 하드 코딩을 해봐도 안써지네요...

소스는 아래와 같습니다.

 

ExifInterface target = new ExifInterface(targetimgpath);
target.setAttribute(ExifInterface.TAG_GPS_PROCESSING_METHOD, "NETWORK");
target.saveAttributes();

 

답변 주시면 감사하겠습니다.

익명사용자 님이 2015년 6월 23일 질문

1개의 답변

0 추천

saveAttributes 할 때 로그캣이 아래와 같은 로그가 남지는 않는지 확인해보시기 바랍니다.

만일 아래 로그가 확인된다면 올바르지 않은 value를 넘겼기 때문일 것으로 보입니다.

exif 스펙을 확인하셔서 올바른 값을 찾아 넣어보시기 바랍니다.

만일 그런 문제가 아니라고 한다면 API 문서상에 추가적인 다른 어떤 설명도 나와있지 않으니 API 버그라고 밖에 볼 수 없겠네여. 

Unsupported encoding for GPSProcessingMethod
Gradler (109,780 포인트) 님이 2015년 6월 23일 답변
확인 해보니 위와 같은 오류가 나며 TAG_GPS_PROCESSING_METHOD 태그를 set하는 함수는 공식 적으로 지원 하지 않는 것 같습니다.
파일을 hex로 열어보니 입력 타입 8 바이트와 해당 태그값을 저장 하는 방식으로 보이는데 ExifInterface의 setAttribute는 String형만 입력 할수 있습니다.
http://stackoverflow.com/questions/18356444/correct-values-to-store-in-tag-gps-processing-method 위와 같은 내용의 삽질을 저도 했는데요 ExifInterface는 네이티브 랩퍼 클래스(껍데기 클래스) 같습니다. 이외 중요한 처리는 네이티브 (jhead_jni)에서 수행 하는 것으로 보이나 해당 소스 파일을 찾기가 어렵더군요..
대충 짐작 하건데 jpg 파일을 열어 처리하는 것 같습니다.
결국 위의 처리를 하려면 말씀대로 exif 스펙을 확인 후 파일을 직접 열어서 해당 태그값을 집어넣는 방식으로 해야 할듯 합니다.
하지만 아직 굳이 필요하지 않은 값이라 해당 값에 관한 처리를 하지 않고 나중에 시간이 날때 작업을 해볼까 합니다.
...