사진 기반 자동 위치 입력 기능 구현

김현준·2025년 7월 8일

배경

우리 서비스에서는 사용자가 특정 장소를 공유할 수 있게 하고 있다.
하지만 피드백 중 "위치 직접 입력이 번거롭다. 인스타그램처럼 사진에 위치가 자동으로 잡히면 좋겠다”는 의견이 있었다.

“사진에 담긴 GPS 정보를 읽어서 위치를 자동으로 입력하자!”


기능 목표

  • 사용자가 사진을 업로드하면
    → 사진 메타데이터(EXIF)에서 GPS 좌표 추출
    → 좌표를 사람이 읽을 수 있는 주소로 변환
    → 입력 필드에 자동으로 표시 (다국어 지원 포함)

어떤 도구들을 검토했을까?

1. EXIF 데이터 추출 라이브러리

도구특징사용 여부
exifrGPS 추출에 특화, 작고 가볍고 Promise 지원선택
exifreader다양한 메타데이터 지원, 구조 복잡, DMS 가공 필요불필요하게 무거움
  • exifr는 GPS 좌표 추출 목적에 딱 맞는 가벼운 라이브러리라 선택함.

2. 좌표 → 주소 변환 (Reverse Geocoding API)

도구장점단점사용 여부
OpenCage API상업용에 안정적, 2,500건 무료, 응답 깔끔월간 제한 이후 유료선택
Google Maps API정밀도 높고 정보 많음사용료 비쌈, 키 관리 번거로움
Nominatim (OSM)완전 무료, 다국어 가능Rate limit 엄격, 속도 느림❌ (비상용 대안으로 고려)

OpenCage는 글로벌 주소 + 안정성 + 다국어 지원까지 모두 만족해서 최종 선택.


전체 아키텍처 요약

[사용자 사진 업로드]
       ↓
[exifr로 GPS 추출]
       ↓
[서버 API 호출: /api/reverse-geocode]
       ↓
[OpenCage에서 주소 조회 → 응답]
       ↓
[input 필드 자동 채움 + 상태 저장]
  • accept-language를 함께 보내면 주소도 ko, en에 맞게 자동 번역됨 → next-intl 연동 OK

추가: GPS 정보가 추출되지 않는 경우

위치 자동 입력 기능은 exifr 라이브러리를 통해 이미지의 EXIF 메타데이터에 포함된 GPS 좌표를 추출해 구현한다.
하지만 모든 이미지가 GPS 정보를 갖고 있는 것은 아니다. 실제 사용 중 다음과 같은 경우에는 위치 정보가 추출되지 않거나 undefined로 반환된다.

GPS 정보가 누락되는 대표적인 경우

경우설명
PNG, AVIF 포맷EXIF 메타데이터 자체를 저장하지 않는 이미지 포맷이라 GPS 추출이 불가능하다. 손실/무손실 여부와는 무관하며, 이는 포맷 구조(사양)의 차이에서 비롯된다.
SNS/카카오톡 등으로 받은 이미지사진 전송 시 개인 정보 보호를 위해 자동으로 EXIF 정보가 제거된다. 특히 카카오톡, 인스타그램 저장본은 대부분 위치 정보가 제거된 상태다.
위치 기능 비활성화된 카메라로 촬영사진을 찍을 당시 스마트폰에서 '위치 정보 저장' 기능이 꺼져 있었다면 EXIF 자체에 GPS 정보가 담기지 않는다.
GPS 태그만 있고 좌표는 비어 있음일부 JPG 파일은 GPSLatitude: [0, 0, 0]처럼 GPS 태그는 있으나 실제 좌표 값이 없는 경우도 있다. 이는 위치 정보가 없는 것과 동일하게 간주된다.
이미지 편집 앱으로 저장 후 재업로드한 경우필터 앱이나 압축 앱은 용량 최적화를 위해 EXIF 정보를 제거하거나 변형하는 경우가 많다.
EXIF 정보가 깨지거나 구조가 손상된 이미지클라우드 저장/변환 과정에서 EXIF 데이터가 누락되거나 깨져 GPS 파싱이 실패할 수 있다.

참고
JPEG은 손실 압축 포맷이지만 EXIF 메타데이터를 저장하는 구조를 갖고 있기 때문에 GPS 정보를 포함할 수 있다.
반면, PNG는 무손실 압축이지만 EXIF 저장 구조를 지원하지 않는다.
즉, EXIF 저장 가능 여부는 압축 방식이 아니라 포맷 구조 자체의 차이에서 비롯된다.

대응법

  • JPG라고 해도 반드시 위치 정보가 포함되어 있는 건 아니라는 점을 UX에서 명확히 안내

  • 위치 정보가 없거나 exifr.gps()가 실패할 경우:

    • 사용자에게 "위치 자동 입력이 불가능한 이미지입니다. JPG 형식 또는 위치 정보가 포함된 원본 이미지를 사용해주세요." 안내
    • 향후에는 브라우저 위치 권한 요청으로 현재 기기의 GPS를 받아 자동 위치 입력하는 fallback 전략도 도입할 예정

인스타그램 역시 GPS 정보가 없는 이미지에는 사용자 현재 위치 기반 자동 추천 기능을 제공한다. 우리 서비스도 비슷한 UX 개선을 적용할 계획이다.

profile
기록하자

0개의 댓글