這裡介紹如何在 Linux 系統中使用 ImageMagick 來在照片上加入拍攝日期與時間的標示。
現在的數位相機或是手機在拍攝相片時,都會將拍攝時的各種參數寫入照片的 EXIF 資訊中,這中間當然也包含了拍攝的日期與時間,雖然我們可以使用各種的看圖軟體來取出這些資訊,但是如果您要將照片沖洗出來時,可能就會需要將日期與時間直接印在照片上。
如果只是一兩張照片,您可以用人工的方式,使用照片編輯軟體直接打上日期與時間,但是如果照片的數量很多的時候,人工就無法處理了,這時候我們可以使用 ImageMagick 配合簡單的 shell 指令搞,自動將照片 EXIF 資訊中的日期與時間取出來,然後印在照片上,這個方式在處理大量照片時非常方便。
首先安裝 Imagemagick,若在 Ubuntu Linux 中可以使用 apt 安裝:
apt-get install imagemagick
使用 convert
指令在照片上加上日期與時間戳記:
#!/bin/sh for img in *.jpg; do convert "$img" -gravity SouthEast -pointsize 48 -stroke '#000C' -strokewidth 2 -annotate +20+20 %[exif:DateTimeOriginal] -stroke none -fill white -annotate +20+20 %[exif:DateTimeOriginal] "time_$img"; done
這個指令稿會將目前目錄的照片(所有 *.jpg
檔)加上日期與時間戳記之後,在原本的檔案名稱之前加上 time_
,然後另存成一個新的檔案。
其中 gravity
參數可以指定文字的位置,指定為 SouthEast
可以讓時間戳記顯示在照片的右下角,如果您想要更改文字的位置,可以修改這個參數來調整,在 Imagemagick 的說明文件中有列出所有可以用的參數值。
pointsize
就是字型的大小,這個數值也是可以直接依照自己的需求調整的。
這裡我們使用白色的文字來印上時間戳記,但是如果碰到照片剛好也是白色的時候,白色的字就會不明顯,甚至完全看不到,所以我們這裡是先印上灰色的陰影,在印上白色的字體,這樣就算遇到白色的照片,印上去的時間戳記還是可以看的到。
在 pointsize
之後的三行 stroke
、strokewidth
與 annotate
就是印上灰色陰影的指令參數,這個 stroke
可以指定陰影的顏色,而 strokewidth
則是可以調整陰影的寬度。
而之後的三行 stroke
、fill
與 annotate
則是用來指定文字樣式的參數,fill
可以調整文字的顏色,顏色的指定可以使用下面者幾種格式:
-fill blue -fill "#ddddff" -fill "rgb(255,255,255)"
詳細用法可以參考 Imagemagick 的說明文件。
最後的 "time_$img"
就是輸出的圖檔檔名,如果要使用自己的命名規則,就可以從這裡修改。
以下我使用兩張照片做為示範,一張是深色的狀況,而另一張是淺色的:
加上日期與時間戳記後,會像這樣:
參考資料:Digital Photography Tips and Techniques、superuser、ImageMagick