之前介紹過使用gpsPhoto和exiftools來幫相片加上geotag,此工具的好處是支援DSLR的raw檔。
一般工具則只支援JPG檔而已,對於RAW檔使用者有許多不便。
最近在網路上找到一篇不錯的資料,將指令變成批次檔,之後只要將相片資料夾和gps檔案放好定位後拖曳就可以自動加上geotag(事實上,是我自己寫得批次檔突然有問題一.一,只好去找現成來用)。
原文連結:使用 gpsPhoto.pl
原文如下:
我已經介紹過不用 GPS 將地理資訊加到照片,現在來說明如何利用 gpsPhoto.pl 將 GPS 紀錄整合到相片裡面。講解以前,請確認你已經有 GPX 格式的 GPS 紀錄,同時也安裝了 gpsPhoto.pl。
gpsPhoto.pl 用來標記相片地理位置的選項十分繁多,我簡化只說明兩種用法:
gpsPhoto.pl --dir {imageDir} --gpsdir {gpxDir} --timeoffset {N}
gpsPhoto.pl --image {image} --gpsfile {gpx} --timeoffset {N}
第一種用法可以一次標記地理位置到 imageDir 目錄內的全部相片檔,GPX 檔案則全數放在 gpxDir 目錄內;第二種用法可以標記地理位置到一張相片 image,gpx 是 GPX 檔案名稱。N 數值是用來描述相片時間與 GMT (格林威治時間) 的關係,我的相機不能設定時區,所以我是直接設成台灣當地時間。GPX 檔案內使用的是 GMT 時區,相片時間必須減掉 -28800 秒 (8 小時) 才等於 GMT,所以對我而言,N 值等於 -28800。(註:有的 GPS 軟體轉出來的 GPX 時間已經是當地時區,這時 N = 0)
我喜歡一次就標記指定目錄的全部相片,而且還希望能遞迴搜尋處理所有子目錄,所以下面的批次命令檔 GeoTaggingDir.cmd 可以派上用場:
@echo off
if %1!==! goto :Syntax
setlocal
set gpsdir="C:\Download Files\GPS utilities\LogFiles"
for /D %%i in (%*) do call :GeoTaggingDir %%i
endlocal
pause
goto :EOF
:Syntax
echo Syntax:
echo GeoTaggingDir.cmd {input1} [input2] ...
pause
goto :EOF
:GeoTaggingDir
for /D %%i in ("%~1\*.*") do call :GeoTaggingDir "%%i"
echo Processing directory %1
gpsPhoto.pl --dir %1 --gpsdir %gpsdir% --maxtimediff 180 --timeoffset -28800
記得修改:第四行的 gpsdir 變數指定 GPX 檔案放置的目錄路徑 (我喜歡將所有的 GPX 檔集中放置同一目錄,讓 gpsPhoto 自己去尋找適當紀錄),最後一行是執行 gpsPhoto.pl 的語法,這裡多用了 --maxtimediff 選項,由於 GPS 不可能隨時記錄地點,有時也會與衛星信號失聯,所以 180 代表相片時間與 GPS 紀錄相差小於 180 秒就承認找到記錄,預設是 120 秒。喜歡的話還可以加上其他選項,例如 --copyright "by-nc-sa" 指定 Creative Common License Type;--credit "Shenghung Lin" 放上名字。
在檔案總管選擇要處理相片的資料夾,用滑鼠左鍵拖曳到 GeoTaggingDir.cmd 開始標記地理位置。
沒有留言:
張貼留言