2022/12/04

ExifTool時間遷移大法

旅行回來,難得把相機帶也過去,拍了點照片。雖然肥叔叔的不是單反無反相機,只是一台奧林匹斯的半專業級Prosumer機,但出來的成像還是比新版iPhone SE好一點。

筆者是會帶電腦出門的,而且也在家的路由器設了VPN,所以每晚在酒店有WIFI環境下就會用VPN連回家裡的NAS去,用Synology自帶的Moments去備份照片。

可是嘛…相機沒用太久,出行前重新設定日期時間錯手設了2023年而不是2022年。於是NAS就備份了一堆「來自未來」的照片。

數碼照片的日期是寫在JPEG(或者其他格式)檔案中的一組叫Exif的文字檔裡面,一般情況下不是不能改,用Photoshop之類也可以逐個檔案打開去修改的。

一張半張就算了,可是一趟旅行,一個景點就不是十張八張了事,這就是一大問題,於是回來慢慢解決,要找個能支援批次修改照片Exif資料的工具,把拍攝日期向前移一年。

Exif讀寫工具:ExifTool

ExifTool是讀寫改媒體檔案Exif/metadata的工具,是免費的自由軟件。

安裝ExifTool的方法,可以參照先前的一篇文章。本篇主要講單一場景下的用法。

查看單一照片的全部Exif

查看「_B050002.JPG」的Exif資料,輸入

exiftool ~/Drive/Moments/Web/2022-11-05/_B050002.JPG -p

就可以看到照片裡壯觀的Exif資料…

修改前,「Modify Date」、「Date/Time Original」和「Create Date」數值,是由相機寫入的。相機日期時間設定錯誤的話,這外數值就不正確。

當中有三個重要的日期參數。

ExifTool Version Number : 12.50
File Name : _B050002.JPG
Directory : /var/services/homes/●●●/Drive/Moments/Web/2023-11-05
File Size : 8.7 MB
…
Modify Date : 2023:11:05 09:47:39
…
Date/Time Original : 2023:11:05 09:47:39
Create Date : 2023:11:05 09:47:39
…

Exif的日期時間格式是YYYY:MM:DD hh:mm:ss。日期和時間以空格分開,丙年月日和時分秒則是分別以冒點分隔。

用ExifTool修改日期時間

ExifTool有一整個模組是專門用來修改日期和時間,被稱之為Date/Time Shift

單刀直入,要修改Exif原生/創建/編輯日期的命令──

假設保持日月時分秒不變,但向前移一年,從2023改到2022年

exiftool -alldates-="1:: 0" ~/kyoto-photos/_B050002.JPG

假設保持日月時分秒不變,但向後移一年,從2021改到2022年

exiftool -alldates+="1:: 0" ~/kyoto-photos/_B050002.JPG

留意兩個命令的分別是「=」前的加號和減號

ExifTool的Date/Time Shift命令解說

格式是:

程式 功能 參數 檔案

向前移功能 -alldates-
──把時間日期向前移。

向後移功能 -alldates+
──把時間日期向後移。

參數 ="年:月:日 時:分:秒"
移動的方向由功能決定,參數只是單純選擇修改哪一個數值。

用ExifTool跑了-alldate命令去「時間轉移」了一年,就使照片的exif資料從2023年變回2022年,月日時分秒的數值則不變。

檔案就和操作系統的檔案路徑一樣,這裡個在用戶資料夾(home directory)內放置京都照片的資料夾,路徑是「~/kyoto-photos/」。另外,也可以用星號甚至用上Regular Expression去對檔案作多選/全選/篩選。像筆者的使用實例,一次過把 kyoto-photos 資料夾裡面的JPG都修改,就讓ExifTool執行:

./exiftool -alldates-="1:: 0" ~/kyoto-photos/*.JPG

完成後,ExifTool會把原照片更名成「_B050002.JPG_original」,而套用了新Exif資訊的就套在一個新生成的檔案,並用了「_B050002.JPG」的名字。

ExifTool的Date/Time Shift除了年日月時分秒也支援時區之類,詳情參閱ExifTool的官網文檔或者在討論區搜索。而時間修改更只是ExifTool功能中的冰山一角,想玩得更深層次的話,就直接去ExifTool.org看看咯。