개발을 진행하다 보면 사진 속성값을 수정해야 하는 경우가 있다
사진에 GPS 데이터 값을 넣는다던가 회전값을 알아온다던가...
실제 개발을 하다가 사용해 본 내용을 정리해보고자 한다.
물론 ExifInterface를 이용해서 다른 정보들을 확인하는 글들은 많이 확인할 수 있을 것이다.
아래 구글 공식문서를 확인해도 가능하니 확인해 본다면 좋을 것이다.
# 개요 : 전달받은 사진에 현재 GPS 데이터를 삽입해라!!
# 사용 라이브러리 : https://developer.android.com/jetpack/androidx/releases/exifinterface?hl=ko
androidx.exifinterface:exifinterface:1.3.6
# GPS 데이터 삽입 코드
// 사진 속성 함수 선언
ExifInterface exif;
// GPS 데이터 중 위경도 좌표가 있는 GPRMC 데이터
String Avalid_GPS_DATA = "$GPRMC,232023.00,A,3724.769351,N,12705.867068,E,019.2,270.0,290419,,,A*5F";
// LAT, LON 값 추출
double latitude = Objects.requireNonNull(DRAW_LOCATION(Avalid_GPS_DATA)).latitude;
double longitude = Objects.requireNonNull(DRAW_LOCATION(Avalid_GPS_DATA)).longitude;
try {
exif = new ExifInterface(사진파일경로); // Photo.getpath()
// 도분초 좌표 변환 : LAT
int num1Lat = (int) Math.floor(latitude);
int num2Lat = (int) Math.floor((latitude - num1Lat) * 60);
double num3Lat = (latitude - ((double) num1Lat + ((double) num2Lat / 60))) * 3600000;
// 도분초 좌표 변환 : LON
int num1Lon = (int) Math.floor(longitude);
int num2Lon = (int) Math.floor((longitude - num1Lon) * 60);
double num3Lon = (longitude - ((double) num1Lon + ((double) num2Lon / 60))) * 3600000;
// GPS 좌표 삽입
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, num1Lat + "/1," + num2Lat + "/1," + num3Lat + "/1000");
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, num1Lon + "/1," + num2Lon + "/1," + num3Lon + "/1000");
// 북위, 남위 정보 삽입
if (latitude > 0) {
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "N");
} else {
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "S");
}
// 동경, 서경 정보 삽입
if (longitude > 0) {
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "E");
} else {
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "W");
}
// 정보 갱신
exif.saveAttributes();
} catch (IOException e) {
Log.e("PictureActivity", Objects.requireNonNull(e.getLocalizedMessage()));
}
이렇게 하면 끝~~~!!
사진정보를 확인해 보면 GPS 정보가 삽입되어 있는 것을 확인할 수 있다.
이상으로 GPS 정보가 없는 사진에 휴대폰이나 다른 장치에서 전달받은 GPS 데이터를 삽입하는 방법이었다.
오늘도 모두 즐코딩 합시다~!!
'개발 정보 공유 > Android' 카테고리의 다른 글
[WifiUtils] Android Wifi 접속 심플 구현 라이브러리 (2) | 2023.09.15 |
---|---|
Android Email 유효성 체크 (0) | 2022.08.02 |
<Android> TextWatcher 사용방법!! (EditText 글자 입력 시 변경 이벤트 수신처리) (0) | 2022.07.18 |
'똠프가' 개인정보처리방침 (1) | 2022.03.02 |
안드로이드 BadTokenException 처리 (0) | 2021.12.06 |