2023년 11월 21일부터 아래 문서에 설명된 지도 수정이 더 이상 작동하지 않습니다.
현재 상태는 이슈 #41을 참조하세요.
2018년 12월 1일부터 Lightroom 비구독 버전의 지도 기능 작동이 중단되었습니다. Adobe는 Lightroom CC 구독(120 USD/년)을 구매하거나 GPS 좌표를 즐겨찾는 검색 엔진(LOL!)에 복사하여 붙여넣을 것을 제안합니다.
이 프로젝트는 Lightroom CC를 구독하지 않고 손실된 기능을 부활시킵니다.
이를 달성하기 위해 Adobe 대신 자체 Google Maps API 키를 사용하도록 Lightroom을 수정하겠습니다. Google 구독이 필요하지만 해당 구독에는 매월 200 USD의 무료 사용 크레딧이 포함되어 있으며 이는 Lightroom 지도 모듈의 일반 사용자에게 충분합니다.
이 절차에는 중간 수준에서 고급 수준의 IT 기술이 필요합니다. 실수로 인해 Lightroom 설치가 중단될 수 있습니다! 현재 수행 중인 작업을 잘 모르는 경우 지정된 IT 지원 담당자에게 도움을 요청하세요. 우리는 귀하의 IT 지원 담당자가 아닙니다!
Google Maps API 키를 비밀로 유지하세요
Google Maps API 키를 보호하지 못하면 Google Cloud 계정에 예상치 못한 요금이 청구될 수 있습니다.
보증 무효! 우리는 Lightroom 설치 중단에 대해 책임을 지지 않습니다. 우리는 귀하의 Google Cloud 계정에 부과된 비용에 대해 책임을 지지 않습니다.
이 절차는 Windows 10의 Lightroom 6.14를 사용하여 개발 및 테스트되었습니다.
사용자들은 이 기능이 다음 제품에서도 작동한다고 보고했습니다.
현재 패치는 Lightroom 5.x(문제 #8) 또는 Lightroom 7.x(문제 #10)에서 작동하지 않습니다. 이 버전에 대한 진행 상황이 있으면 공개 문제에 댓글을 달아 알려주시기 바랍니다.
정말 감사합니다! 연구와 피드백에 기여해주신 모든 분들께 감사드립니다!
Adobe를 대체하려면 개인 Google Maps API 키를 만들어야 합니다.
이 가이드의 첫 번째 섹션에서는 프로세스를 안내합니다. 아직 Google Cloud에 계정이 없는 경우 계정 생성 및 결제 세부정보 입력도 포함됩니다.
API 및 서비스 > 라이브러리로 이동하여 카테고리 > 지도로 필터링하세요.
다음 API를 선택하고 활성화를 클릭합니다.
Lightroom은 두 개의 API만 호출하므로 Google Maps API 키를 필수 서비스로 제한하여 남용 위험을 제한하세요.
Lightroom 지도 모듈을 일상적으로 사용하려면 Google Cloud의 월간 무료 사용 크레딧이면 충분합니다. 예상치 못한 일을 방지하려면 예산이나 할당량을 설정해야 합니다. 구성된 금액이 초과되면 예산에서 이메일 알림을 보내는 반면, 할당량에서는 API가 꺼집니다.
예산은 1 USD로 구성하고 첫 번째 알림은 10%로 구성하는 것이 좋습니다. 이 구성을 사용하면 귀하가 자신의 돈을 10센트 이상 지출하면 Google에서 이메일을 보내드립니다.
Lightroom이 아직 실행 중이면 지금 닫습니다.
Lightroom의 응용 프로그램 파일을 찾고 Location.lrmodule
이라는 파일을 찾습니다. 이것은 Lightroom 맵 모듈입니다. 이 파일의 백업 복사본을 만들어 안전한 장소에 보관하세요.
위치와 파일 이름은 운영 체제와 Lightroom 버전에 따라 다를 수 있습니다.
C:Program FilesAdobeLightroomLocation.lrmodule
파일입니다./Applications/Adobe Lightroom/Adobe Lightroom.app
찾아 마우스 오른쪽 버튼을 클릭한 후 패키지 콘텐츠 표시 를 선택합니다. 맵 모듈은 /Contents/PlugIns/Location.agmodule
입니다.중요 참고: 원본 폴더에 백업 복사본을 남겨두면 파일 확장자를 변경해야 합니다(예: Location.lrmodule에서 Location.lrmodule_bak로). 그렇지 않으면 패치된 파일 대신 Lightroom에서 계속 선택될 수 있습니다.
Windows에서는 Resource Hacker를 사용하여 패치해야 하는 Lua 리소스를 추출합니다.
Location.lrmodule
열기LUA
섹션 확장LOCATIONMAPVIEW.LUA
에서 마우스 오른쪽 버튼을 클릭하고 저장통 리소스를 선택합니다.AGREVERSEGEOCODESERVICE.LUA
에서 마우스 오른쪽 버튼을 클릭하고 저장소 리소스 저장을 선택합니다.LOCATIONDEBUGPANEL.LUA
에서 마우스 오른쪽 버튼을 클릭하고 저장소 리소스를 선택합니다. Mac에서는 Location.agmodule
내에서 Lua 파일에 직접 액세스할 수 있습니다.
Location.agmodel
마우스 오른쪽 버튼으로 클릭하고 패키지 콘텐츠 표시를 선택합니다./Contents/Resources/
로 이동합니다.LocationMapView.lua
, AgReverseGeocodeService.lua
및 LocationDebugPanel.lua
파일을 패치를 위해 원하는 위치에 복사합니다.아직 설치하지 않았다면 Python 3을 설치하세요.
이 프로젝트와 함께 제공되는 Python 스크립트 patchluastr.py를 사용하면 Lua 파일의 특정 문자열을 바꿀 수 있습니다.
LocationMapView 및 AgReverseGeocodeService의 경우 Python 스크립트 patchluastr.py를 사용하여 Adobe 키를 개인 Google Maps API 키로 바꿉니다.
.bin
으로 끝나야 합니다. 그렇지 않으면 Resource Hacker가 다음 단계에서 해당 파일을 찾을 수 없습니다. 다음과 같이 patchluastr.py
실행하고 {your-api-key}
Google API 키(중괄호 제외)로 바꿉니다. patchluastr.py LOCATIONMAPVIEW.LUA "client=gme-adobesystems" "key={your-api-key}" -o LOCATIONMAPVIEW.tmp
patchluastr.py LOCATIONMAPVIEW.tmp "3.12" "3.51" -o LOCATIONMAPVIEW.bin
patchluastr.py AGREVERSEGEOCODESERVICE.LUA "client=gme-adobesystems" "key={your-api-key}" -o AGREVERSEGEOCODESERVICE.bin
orignal-name.lua.bak
로 바꾸는 것입니다. 그런 다음 다음과 같이 patchluastr.py
실행하고 {your-api-key}
Google API 키(중괄호 제외)로 바꿉니다. patchluastr.py LocationMapView.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o LocationMapView.lua.tmp
patchluastr.py LocationMapView.lua.tmp "3.12" "3.51" -o LocationMapView.lua
patchluastr.py AgReverseGeocodeService.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o AgReverseGeocodeService.lua
LocationDebugPanel 파일에서 Python 스크립트 patchluastr.py를 사용하여 서명 확인을 비활성화합니다.
patchluastr.py LOCATIONDEBUGPANEL.LUA "nature" "street" -o LOCATIONDEBUGPANEL.bin
patchluastr.py LocationDebugPanel.lua.bak "nature" "street" -o LocationDebugPanel.lua
예를 들어 TypeError: unsupported operand type(s)
와 같은 오류로 인해 patchluastr.py 실행이 실패하는 경우 Python 3이 설치되어 있는지 확인하세요. 여러 버전의 Python이 설치되어 있는 경우 명령 앞에 python3
을 추가하여 Python 3으로 스크립트를 명시적으로 실행할 수 있습니다.
python3 patchluastr.py {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.lua
실험적 : Python 설치를 원하지 않는 Windows 사용자를 위해 여기에서 Python을 설치할 필요가 없는 patchluastr
의 실행 가능한 버전을 만들었습니다. 명령줄은 다음과 같습니다.
patchluastr.exe {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.bin
참고 : 일부 사용자는 추가 패치가 필요하다고 보고합니다. 지도가 작동하지 않거나 지도 작동이 중지되면 문제 #12와 문제 #19를 확인하세요. 미국에서는 이 문제가 발생하지 않았으므로 국가에 따라 다를 수 있습니다.
Windows에서는 Resource Hacker를 사용하여 Lua 리소스를 패치된 버전으로 교체하세요.
Location.lrmodule
열기LUA
섹션 확장LOCATIONMAPVIEW.LUA
에서 마우스 오른쪽 버튼을 클릭하고 리소스 교체를 선택한 다음 파일 선택을 클릭하고 이 리소스의 패치된 버전으로 이동합니다. 그런 다음 바꾸기를 클릭하세요.AGREVERSEGEOCODESERVICE.LUA
에서 마우스 오른쪽 버튼을 클릭하고 리소스 교체를 선택한 다음 파일 선택을 클릭하고 이 리소스의 패치 버전으로 이동합니다. 그런 다음 바꾸기 를 클릭합니다.LOCATIONDEBUGPANEL.LUA
에서 마우스 오른쪽 버튼을 클릭하고 리소스 교체를 선택한 다음 파일 선택을 클릭하고 이 리소스의 패치 버전으로 이동합니다. 그런 다음 바꾸기를 클릭하세요.Location.lrmodule
저장합니다. 권한에 따라 다른 이름으로 저장을 사용한 다음 수정된 파일을 C:Program FilesAdobeLightroom
에 다시 복사해야 할 수도 있습니다. Mac에서는 패치된 Lua 파일을 /Applications/Adobe Lightroom/Adobe Lightroom.app/Contents/PlugIns/Location.agmodule/Contents/Resources/
에 다시 복사하여 원본 파일을 덮어씁니다.
이제 Lightroom 설치의 지도 모듈이 다시 작동합니다.
Geo Coding API를 활성화하지 않은 경우 오류 메시지가 잠시 표시됩니다. 그러나 기본 지도 및 위치 정보 태그 지정 기능은 계속 작동합니다.(참고: 일부 사용자는 Geo Coding API가 활성화되지 않으면 지도 모듈이 작동하지 않는다고 보고합니다.)
이것을 가지고 놀기 전에 Locations.lrmodule의 백업이 있는지 다시 한 번 확인하세요!
아래 예제에서는 hacks
폴더에 있는 패치 파일을 사용합니다. 아직 완료하지 않았다면 Github에서 전체 프로젝트를 복제하거나 다운로드하는 것이 좋습니다. 예를 들어 이 페이지 오른쪽 상단에 있는 녹색 버튼을 클릭하세요.
참고: 이러한 해킹의 대부분은 Google Maps API를 기반으로 하므로 먼저 Google Maps API 키를 수정해야 합니다.
이 패치는 "Light" 지도 스타일을 OpenStreeMap으로 대체합니다.
API 키를 패치한 후 다음을 실행합니다.
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/osm.patch -o LOCATIONMAPVIEW-osm.bin
이제 LOCATIONMAPVIEW.bin
대신 Resource Hacker와 함께 LOCATIONMAPVIEW-osm.bin
사용하고 이후에는 OpenStreetMap을 "Light" 지도 스타일로 사용할 수 있습니다.
해킹 크레딧: @pbb72
이것은 매우 급진적이다. StreetView를 활성화하면 지도 핀을 3D로 볼 수 있습니다! 아주 정확하지는 않지만 아주 멋지네요.
Lightroom 파일에는 StreetView를 활성화하는 코드가 이미 있으므로 Adobe가 이에 대해 작업 중이었지만 충분하지 않아 비활성화했을 수도 있습니다.
이 숨겨진 기능을 활성화하려면 다음을 실행하세요.
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/streetview.patch -o LOCATIONMAPVIEW-sv.bin
해킹 및 스크린샷 출처: @pbb72
지구상의 일부 위치에서는 하향식 보기 대신 대각선 관점의 항공 사진을 제공합니다. 참고: 이 사진은 그다지 정확하지 않습니다.
이 컨트롤을 활성화하려면 다음을 실행하세요.
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/tiltmap.patch -o LOCATIONMAPVIEW-tilt.bin
이 패치를 사용하면 현재 위치에 데이터를 사용할 수 있는 경우 오른쪽 하단에 새로운 컨트롤이 나타납니다. 컨트롤이 나타나도록 확대해야 할 수도 있습니다.
해킹 크레딧: @pbb72
Lightroom의 지도 스타일 선택기에 더 많은 지도를 추가할 수는 없다고 생각합니다. 하지만 다행히도 Google 지도는 자체 지도 스타일 선택기를 제공하므로 이를 활성화하기만 하면 됩니다.
활성화되면 드롭다운 메뉴에 자체 항목을 추가할 수 있습니다. 자세한 내용은 패치 파일 내부의 설명을 참조하세요.
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/mapselector.patch -o LOCATIONMAPVIEW-sel.bin
해킹 크레딧: @pbb72
이 패치는 지도 아래 창에 JavaScript 오류 및 디버그 메시지를 표시하므로 더 많은 해킹을 개발할 때 매우 유용합니다. 아마도 이 기능을 영구적으로 활성화하고 싶지 않을 것이므로 이 핵을 적용하기 전에 위치 모듈을 백업해 두십시오.
hacks/jsconsole.patch 스크립트를 실행합니다:
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/jsconsole.patch -o LOCATIONMAPVIEW-con.bin
스크립트는 다음을 수행합니다.
이제 실제로 읽을 수 있는 오류 메시지를 즐겨보세요!
해킹 및 스크린샷 출처: @pbb72
2018년 초, Google은 Google 지도를 타사 애플리케이션에 내장하기 위한 가격 모델을 개편하여 무료 액세스 또는 정액 요금에서 거래 기반 가격으로 변경했습니다. Google Maps API에 대한 요청 수가 계산되며, 임계값 이후에는 모든 요청에 대해 소액의 수수료가 부과됩니다.
Google의 새로운 가격은 영구적으로 라이선스가 부여되는 제품과 호환되지 않습니다. 기존 Lightroom을 사용하면 Adobe는 한 번만 수익을 얻었지만 지도 모듈을 사용할 때마다 Google에 비용을 지불해야 합니다. Adobe의 경우 이는 지속 가능한 비즈니스 모델이 아닙니다.
이전 버전의 Adobe Lightroom에 포함된 Google Maps API 키는 2018년 11월 30일에 만료되었습니다.
Google Maps JavaScript API를 사용하면 Google 지도를 웹사이트와 애플리케이션에 삽입할 수 있습니다.
2018년 12월 기준으로 Google Maps JavaScript API 비용은 지도 로드당 0.007 USD(USD 7/1000)입니다. 지도가 로드되면 패닝, 확대/축소, 지도 레이어 전환 등 지도와의 사용자 상호 작용으로 인해 추가 지도 로드가 생성되지 않습니다.
또한 2023년 3월부터 Lightroom에서 요청한 API 버전이 더 이상 사용되지 않아 Lightroom이 호환되지 않는 버전을 로드하여 지도 기능이 중단되었습니다.
Lightroom 지도 모듈은 Maps JavaScript API를 호출하여 Lightroom 내부에 지도를 표시합니다. 지도 모듈이 작동하려면 이 API에 대한 액세스가 필요합니다.
이 API에 대한 액세스는 Lua 리소스 LOCATIONMAPVIEW.LUA에서 구현됩니다.
Google Geocoding API를 사용하면 애플리케이션이 GPS 좌표를 기반으로 위치를 검색하고 장소 이름을 조회할 수 있습니다.
2018년 12월 기준으로 Google Geocoding API 비용은 요청당 0.005 USD(5 USD/1000)입니다.
Lightroom 지도 모듈은 Geocoding API를 호출하여 위치를 검색할 때 현재 선택한 이미지의 장소 이름을 표시합니다. 지도 모듈은 이 API에 액세스하지 않고도 작동하지만 지도 모듈에 들어갈 때와 이미지 간에 전환할 때 오류 메시지가 잠시 깜박입니다.
지도 모듈에 들어갈 때 Geocoding API에 대한 여러 호출이 관찰되었습니다. 또한 이 API에 대한 호출을 생성하는 다른 작업이 무엇인지도 모릅니다. Google Cloud Platform에서 제공되는 사용 보고서를 주의 깊게 살펴보는 것이 좋습니다. 의심스럽거나 비용이 너무 많이 드는 경우 API 및 서비스 > 자격 증명 아래의 API 제한에서 서비스를 제거하여 Geocoding API에 대한 액세스를 비활성화하세요.
이 API에 대한 액세스는 Lua 리소스 AGREVERSEGEOCODESERVICE.LUA에서 구현됩니다.
역지오코딩(알려진 좌표를 기반으로 이미지 메타데이터에 위치 이름 추가)의 경우 Lightroom은 Adobe의 (만료된) API 키와 Lightroom 라이센스 키를 기반으로 계산되는 것으로 보이는 쿼리 매개변수 signature
사용하여 Google API에 액세스합니다. 문제가 되는 API 호출은 다음과 같습니다.
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&signature=[string-of-characters]
다행스럽게도 Google API는 만료된 서명으로 액세스를 거부하지만, signature=[string-of-characters]
URL에서 제거되거나 signature
알 수 없는 매개변수 이름으로 대체되면 API가 작동합니다. 불행히도 문자열 signature
Lua 파일에 존재하지 않습니다.
문자열을 분리하면 기능이 숨겨지는 것으로 나타났습니다. 서명은 LocationDebugPanel.lua
에서 계산되며 해당 파일의 문자열 nature
은 매개변수 이름 signature
의 일부입니다. nature
street
로 바꾸면 API 호출이 다음과 같이 변경됩니다.
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&sigstreet=[string-of-characters]
Google은 이를 기꺼이 받아들입니다.
2018년부터 Google에서는 결제가 활성화된 Google Cloud Platform 계정이 필요합니다. 모든 Google Maps API 거래는 해당 계정에 대해 비용이 청구됩니다. 다행스럽게도 Google은 각 계정에 월 200달러의 크레딧을 제공합니다. 해당 한도를 초과하는 거래만 신용카드로 청구됩니다.
비용과 서비스 조건은 국가마다 다를 수 있습니다. Google 웹사이트의 세부정보를 주의 깊게 검토하시기 바랍니다.
200 USD이면 28,000회 이상의 지도 로드 또는 Geo Coding API 호출 40,000회에 충분하며, 이는 Lightroom 지도 모듈을 일상적으로 사용하는 데 충분합니다. 예상치 못한 일을 방지하기 위해 예산이나 할당량을 설정할 수 있습니다. 구성된 금액이 초과되면 예산에서 이메일 알림을 보내지만 할당량에서는 API가 꺼집니다.
예산은 1 USD로 구성하고 첫 번째 알림은 10%로 구성하는 것이 좋습니다. 이 구성을 사용하면 귀하가 자신의 돈을 10센트 이상 지출하면 Google에서 이메일을 보내드립니다.