2017年1月25日 星期三

轉接鏡頭也能有詳細的EXIF資訊!ExifTool

最近發現一套功能強大的EXIF編輯程式,ExifTool


ExifTool的語法類似於Perl
不過就算沒學過Perl,參考指令說明還是可以上手
說明文件裡面同時包含了一些範例
可以根據自己的需求,找到類似的參考範例,再修改成自己想要的功能
若找不到類似範例可參考,也可到範例查詢輸入自己的需求



現在有很多無反機身可以轉接他廠鏡頭、老鏡等
但因為鏡頭資訊無法被機身取得,導致照片中的EXIF都沒有鏡頭資訊
後續在整理照片時就比較不方便


透過以下指令讀取檔案的EXIF資訊

#Read EXIF information from a specified file
$ exiftool [FILE]

若只想讀取特定EXIF欄位的資訊,可透過-s加欄位名稱(下例為LensModel),避免顯示一大堆資訊出來

#Read "Len Model" & "Focal Length" EXIF information from a specified file
$ exiftool -s -LensModel -FocalLength [FILE]


透過以下指令修改EXIF,讓轉接鏡/老鏡資訊也能顯示在EXIF中

#Add M42 mount Lens Info into EXIF of photo which created by Sony A7
$ exiftool -LensModel='Meyer Oreston 50mm F1.8' [FILE]

上述的例子是修改Lens Model欄位資訊,將指定檔案FILE的EXIF欄位資訊填入Meyer Oreston 50mm F1.8
如此鏡頭資訊也就能被保存在照片中了

ExifTool最方便的部分就是可以檔案批次處理
若資料夾中同時有不同鏡頭拍攝的照片,為避免其他鏡頭的原始資訊被覆蓋掉,可以加上if判斷式,範例如下

#Select photos which Lens Model is equal to "----" and add M42 mount Lens Info into their EXIF
$ exiftool -if '$LensModel eq "----"' -LensModel='Meyer Oreston 50mm F1.8' [DIR]

從指定資料夾DIR中找到所有Lens Model欄位為----的檔案(Sony A7接老鏡時,因為讀不到鏡頭資訊,會將該欄位填入"----"),並將找到的這些檔案的Lens Model欄位填入Meyer Oreston 50mm F1.8

需注意一下if判斷式這邊的語法,欄位要以變數方式來表示(即:名稱前多加一個$),例如Lens Model欄位以變數表示為$LensModel

-if '$LensModel eq "----"'

此段語法的意義即為
若該檔案的LensModel欄位等於----,則執行後面語法的操作

此外也可根據自己的需求,從EXIF的欄位說明找到想編輯的欄位名稱,再透過對應指令修改
若在修改時遇到問題,也能到討論區查詢&發問,幸運的話也會遇到ExifTool的作者回覆你的問題喔~