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 螢幕來看照片了!



[遊記] 宜蘭馬告二日遊

久違的大自然之旅,這次到了位於宜蘭縣大同鄉的馬告生態公園,兩天一夜的行程雨下個不停,雖然有點不盡興,不過有些風景在細雨中還滿美的。 

馬告位置圖:


[Mac] 將 jar 檔打包成在Mac OS X 上執行的 app 檔

pic1.png   ======> 螢幕快照 2014 01 15 上午11 46 57

 

在開發 Java 應用程式時,經常會將程式打包成 jar 檔,方便執行,不過在 user experience 上面總是沒那麼好,後來找到一些一些解決方案也不能用了,原因是新版的xcode已經不提供這幾個工具 (Icon Composer 和 Jar Bundler) http://www.javaworld.com.tw/jute/post/view?bid=5&id=305437

所以後來又找到另外一個方法,可以將 jar 檔輕易的打包成可以在 Mac 上的APP檔的方法了。 以下是詳細的步驟:

 

1. 安裝 Homeberw

這是一個套件管理軟體,把他想成 Ubuntu 上的 apt-get 吧

http://blog.lyhdev.com/2011/06/homebrew-mac-os-x.html

ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

 

2. 安裝 ant

ant是相當知名的 build process 管理套件,主要就是透過 ant 所描述的 build.xml 將 jar 轉成 app。

brew update brew install ant (或是自行下載 ant 的 jar library 並放到 /Library/Java/Extensions 目錄下)

 

3. 下載 JarBundle

這和Xcode提供的Jar Bundle是不一樣的套件,裡面提供了實做jar to app的library http://sourceforge.net/projects/jarbundler/ 把下載回來的jar檔(jarbundler-2.2.0.jar)丟到 /Library/Java/Extensions 就可以了,熟悉 Java 的人應該不陌生。

 

4. 建立你的 build.xml

這個步驟最關鍵,也最容易出錯,請仔細撰寫。

build.xml 是給ant看的,在這個 description file 中描述了 jar 檔的路徑、,app的名字、icon、版本等等。

範例:

螢幕快照 2014 01 15 上午11 37 12 

參數一覽: http://informagen.com/JarBundler/

參考資料:http://stackoverflow.com/questions/14917908/convert-java-to-app-file-for-macosx-using-jarbundler

 

5. 開始打包

當一切準備就緒後,只要執行以下的指令,就可以把 jar 轉換成 精美的 app 格式了。

ant bundle

 

6. 支援 Retina

打包好後,有些人可能會發現在 retina 的螢幕下,怎麼你的 app 變得相當粗糙,字都糊糊的,原因是 JarBundler 預設沒有把 retina 的選項打開,這時候就要稍微用人工的方式改一下了。

用文字編輯器,或是任何你喜歡的方式編輯 app 裡面的 Info.plist 檔,加上下列的設定:

螢幕快照 2014 01 15 上午11 24 18 1

就完成了!

2013年11月30日 星期六

MacBook Pro 開箱

用過 iPad 與 iPhone 之後,一直很想玩看看 MacOS的系統,而在拿到這台 MacBook Pro 之前,曾經把 ThinkPad x60 灌黑蘋果,但是效能很差,後來也曾用過虛擬機器來解解癮,玩玩 xcode,不過以上都不是最佳解,直接買台 MacBook 才是最快的方式,不過礙於價格與舊的筆電仍然堪用…始終沒有下手。

就在今天,盼望已久的 MacBook Pro 終於拿到啦!

雖然這台 MacBook Pro 是2013年 late 的的低階版本(13吋/4 GB RAM / 128 GB storage),拿來當文書機或是輕量的修圖還算足夠。




2013年9月26日 星期四

[京都&大阪] 京阪隨拍,散步在京阪的大街小巷

在一個偶然的機會下,買到捷星航空的便宜機票,單人來回含額外行李只要 4,6xx。
於是安排了五天四夜的行程,前往大阪旅行去。



因為不想把行程排的很趕,於是安排了像是"中崎町"和"宇治"這類屬於比較悠閒的點,可以散散步,吃吃下午茶和拍拍照。

本次攜帶器材如下,後來發現帶太多了…每天早上都要想要帶誰出門,也許下次會捨棄 FE2 和 24-120mm 吧!

Nikon D700
Nikkor AF-S 16-35mm f/4 VR
Nikkor AF-S 24-120mm f/4 VR
Nikkor AF-S 35mm f/1.4
Nikon FE2 + Voigtlander 40mm f/2