2014年1月15日 星期三

[Mac] 一鍵同步照片與縮圖--工具介紹與說明

自從有了 MacBook Pro 之後,就動起來把桌機的照片同步至筆電的念頭,不過由於手上的MBPR只有可憐的128GB,扣東扣西能用的空間大概只剩下80GB吧。
而桌機就不一樣了,有一顆1.5 TB的硬碟專門拿來存這十年來的照片,raw 檔和原始大小的 jpg 檔都有保存,就算只把 jpg 同步過來,也是上百GB的空間…不可能塞的下的啊…!
於是,上網找到了一些工具來滿足以下的需求:

1. 需將桌機的十年份的照片同步至筆電
2. 不要 raw 檔,只要 jpg (省空間…)
3. 同步過來後需要適當的縮圖與壓縮 (再省空間!)

說到同步,rsync 是唯一人選,縮圖原本是選擇內建的 sips 指令,不過 sips 指令能用的參數不多,而且縮圖品質也不佳,後來找到更強大的工具—ImageMagick。

好了,兩個主要的工具都有了,本者工程師懶惰的精神,該怎麼讓他自動化執行呢?讓我睡覺起來一切都做完,好像什麼都沒發生一樣。

請參考以下的指令吧!
SyncPhotos.sh
for((i=2002;i<=2013;i++))
do
echo "Now process year $i...";
rsync -avz --ignore-existing --include="*.jpg" --include="*.JPG" --exclude-from='exclude.txt' /Volumes/照片/$i/ ./$i/
echo "Start to resize photos...";
mdfind -0 -onlyin ./$i "kMDItemPixelHeight >$size || kMDItemPixelWidth > 2560" | xargs -0 -P 4 -I "{}" mogrify -filter Lanczos -resize 2560x2560 -format jpg -quality 85 -unsharp 0.5x0.5+0.5+0.1 -verbose "{}"
done
首先透過rsync指令把照片拉過來,執行前已經先透過 smb 掛載桌機的照片資料夾了。

由於我的照片都有照年份存放,所以就透過迴圈來同步,同步一年份的照片後馬上進行縮圖的動作,不然硬碟裝不下。

透過 include 參數表示我要 jpg 與 JPG 的檔案,exluce.txt 檔案則是代表這些東西通通不要,selection 和 縮圖是有時候後製的習慣會多copy一份精選照片或是縮圖過後的照片,這些就不用同步了。

exclude.txt


*selection*
*縮圖*
*.*


用 rsync 同步這部份比較沒問題,再來就是怎麼縮圖了。

先用 mdfind 這個指令找出「解析度大於或等於2560的照片」,把這些照片的檔名透過 xargs 丟到 mogrify 這個工具中。(註:-P 4 代表讓4顆cpu core都動起來!)

( mogrify 是 ImageMagick 這個套件裡頭的縮圖工具,可調的參數很多,請見http://www.imagemagick.org/www/mogrify.html )

接著執行 mogrify,使用 Lanczos 演算法將照片縮成最大2560 x 2560,他會保持原比例,不用擔心,而尺吋選擇2560的原因是 13吋 mbrp 的最高解析度是2560,這樣可以一張照片剛好全螢幕。

然後透過quality參數將 jpg 的壓縮率設為85。(誰叫我的硬碟只剩80GB…),最後,大勝 sips 的地方是他還可以設定遮色片銳利化!


就是這麼簡單啦! 一覺起來完成後發現在桌機的 jpg 照片已經通通躺在筆電中,也瘦身過了(150 GB -> 30 GB),可以透過超細緻的 retina 螢幕來看照片了!



沒有留言:

張貼留言