2012年6月12日 星期二

「將照片依照拍攝日期更名,並分置於不同日期資料夾歸檔」的其他工具:Jhead、ExifTool。

之前曾經分享過利用Windows PowerShell 來將照片依EXIF拍攝日期資料更名,並分置於不同日期資料夾歸檔。
後來用了一陣子,發現效率很差,速度很慢。猜測是因為套用PowerShellPack 模組來讀取EXIF的關係。

之前曾經想過利用Jhead來讀取Exif,然後再以PowerShell歸檔,可惜當時沒實際試用,也沒仔細看文件,不然就省了時間。
今天搜尋了一下,發現了一個中文版的指令說明,是舊版2.6的,出自對岸不可考處,轉載於下。
在他的英文原版的最新2.95版指令說明處,了解到原來可以將資料夾路徑作為檔名的一部分作設定,就會將檔案自動搬移歸檔,不存在的資料夾會自行建立。
這樣一來,之前用PowerShell寫半天的東西,簡簡單單一行指令:
[ jhead -n%Y%m%d\%Y%m%d%H%M%S-%f -a U:\DCIM\103CANON\*.* ]
就完成"依日期時間改名-附加保留原名",並歸檔於YYYYMMDD的日期資料夾中了!而且速度很快!
如果影片檔沒有附 .thm檔(包含EXIF資訊),用[-a]參數可能無效,這時候再用PowerShell老方法更名歸檔即可。


另外找到ExifTool 這個程式較大,但功能相當全面,包山包海且支援許多格式,還有圖型化介面ExifTool GUI 可搭配使用,下次有閒可以試試。

======== [轉載] 中文版Jhead指令說明 ========
jhead是德裔加拿大人Matthias Wandel製作的jpeg文件頭編輯修改軟件,也就是編輯修改exif的軟件。優點是比其他任何軟件更加直接、功能強大,缺點是沒有圖形界面,必須通過「運行」指令執行。

網上介紹Jhead的中文材料不多,而且都是隻言片語。我希望能夠做個比較全面的介紹。

一、安裝和使用
jhead目前最新版本是2.6,Windows版的我已經以附件形式上傳了,大家也可以到這個地址去下載:http://www.sentex.net/~mwandel/j ... windows文件夾即可。

使用時,點擊開始菜單-運行命令,在對話框輸入:
"jhead –命令參數 jpeg文件"

例如:
「jhead -de D:\My Pictures\A.jpg」
刪除D盤My Pictures文件夾A.jpg文件的exif信息。

「jhead -de D:\My Pictures\*.jpg」
刪除D盤My Pictures文件夾所有jpg文件的exif信息。其中星號是通配符。

二、通用指令參數

-te <其他jpeg文件>
將其他jpeg文件的eixf導入目標jpeg。例如"jhead –te D:\My Pictures\B.jpg D:\My Pictures\A.jpg"


-dc
刪除jpeg信息中的備註。注意,jpeg文件有兩個備註,一是和其他文件一樣的備註,另一個是exif信息中的備註。jhead僅對exif信息有效。

-de
完全刪除exif信息。

-du
刪除非原始exif信息,例如Photoshop、Turbophoto之類編輯後修改exif留下的信息。

-purejpg
刪除所有jpeg文件非必須的信息。相當於-de、-dc和-du的集合,可以將文件減小數k。

-ce
修改文件的jpeg文件頭部分備註(此備註並非exif信息)。該指令會打開文本編輯器,並在編輯器關閉時將備註信息存入文件。

-cs <文本文件>
導出備註。例如"jhead –cs D:\1.txt D:\My Pictures\A.jpg"

-ci <文本文件>
導入備註。例如"jhead –ci D:\1.txt D:\My Pictures\A.jpg"

-cl <備註文字>
直接輸入備註。。例如"jhead –cl 我的備註 D:\My Pictures\A.jpg"

三、其他指令

時間日期
-ft 將jpeg文件的「修改時間」修改為exif信息中記錄的時間。

-n[<格式-順序>] 該指令會將文件名修改為exif信息中記錄的「創建時間」;如果jpeg文件沒有exif或者exif中的創建時間不可用,則將文件名修改為文件的「修改時間」。
默認的格式-順序為MMDD-HHMMSS
格式-順序參數如下:
%d-日(01-31)
%H-小時(00-23)
%j-一年中的第幾天(001-366)
%m-月(01-12)
%M-分鐘(00-59)
%S-秒(00-59)
%U-一年中的第幾週(00-53)
%w-星期幾(0-6,週日為0)
%y-兩位數紀年(00-99)
%Y-四位數幾年
%i-添加數字序號
例如:
jhead -n%Y%m%d-%H%M%S d:\*.jpg
將所有jpg文件修改為YYYYMMDD-HHMMSS.jpg的格式。
-nf 與「-n」相同功能相同,不保留原文件名。
-a 修改不同擴展名的同名文件名,相機拍攝的avi短片exif信息存儲在與其同名的thm文件中,可用此指令給avi文件更名。一般與「-n」指令共同使用。
-ta<時差> 修正時差,例如時差根據時區確定,例如+1:00或者-1:00
-da<日期>-<日期> 修正日期。日期格式是yyyy:mm:dd、yyyy:nn:dd+hh:mm或者 yyyy:mm:dd+hh:mm:ss。根據前後參數時間差調整exif的時間。
-ts<日期-時間> 直接修改exif中的拍攝時間,日期-時間格式為yyyy:mm:dd-hh:mm:ss

縮略圖


-dt 刪除exif中的縮略圖。這個縮略圖一般為240x160像素,10k大小,用於數碼相機、Windows XP查看照片,刪除它不會影響工作。
-st <文件名> 將exif中的縮略圖複製為另一個jpeg文件
-rt <文件名> 用另一個jpeg文件替換exif中的縮略圖
-rgt[大小] 刷新exif縮略圖,其中大小為縮略圖的最大邊長。

旋轉

-autorot 根據exif中記錄的水平方向信息轉動jpeg照片。
-norot 清除exif中的水平方向信息。

四、使用技巧

光瞭解那麼多參數,並不一定會用。我將自己的經驗總結如下。

1)用開始菜單的"運行"指令並不直觀,可以通過運行cmd命令進入DOS命令提示符界面操作。在DOS界面進入操作照片文件夾(不懂DOS操作的朋友建議稍稍學習DOS指令,今後也會受用無窮),在文件夾中運行jhead命令,用「*.jpg」表示文件夾中所有的jpeg文件,可以進行批處理。



2)-te(複製exif信息)作用在於可以恢復被其他編輯軟件刪除的exif信息。編輯照片之前,先在照片文件夾中建立一個名為「backup」的備份文件夾,將原是照片複製到backup文件夾中,然後再編輯照片,編輯軟件可能會刪除或修改exif。編輯結束後進入DOS界面照片文件夾輸入:
jhead –te 「backup\&i」 *.jpg
照片的exif信息就會從backup文件夾的原始文件中複製回來。其中「&i」表示與目標文件同名的文件,前面的「backup\」表示原始文件位置。


3)-purejpg指令可以刪除所有exif信息,讓照片減小若干k字節。這樣有兩個好處:一是使別人無從知道照片的拍攝時間、拍攝參數等等;二、是很多網站對上傳照片大小有限制,給照片減負10-20k的貢獻已經很大了!
其他軟件必須對每一張照片的exif信息逐個刪除,而現在只需要輸入:
jhead –purejpg *.jpg
就可以了!


4)-n(修改文件名為拍攝時間)指令中,格式-順序參數非常靈活。例如添加「%f」就會保留原文件名的同時添加日期時間。添加「%i」就會增加數字序號。每個參數之間可以加入其它符號分隔。
例如:
jhead –n%i.%f-%Y-%m-%d-%H:%M:%S *.jpg
所有文件都改名為「1.原文件名-年-月-日-時:分:秒.jpg」的格式!


5)-ta(修改時差)指令中,時差參數可以使+1:00、-0:00:30或者+49的格式,分號前第一位數字為小時。


6)-da(修正日期)指令的作用是,如果相機日期和不準確,分別填入相機當前日期和實際日期就可糾正所有照片,例如相機設置到了08年,而目前實際上是07年,則可以運行
Jhead -da2008:01:01-2007:01:01 *.jpg
還可以在日期後將上「/時間」。例如2008:05:29/11:21

其他功能可以以此類推,希望對大家有所幫助。
======== [轉載] 中文版Jhead指令說明 ========

沒有留言:

張貼留言