iOS開發-圖片高斯模糊效果
iOS開發的時候有的時候需要將圖片設定模糊,或者通過點選下拉方法,去除模糊,一切都是為了應用更受使用者歡迎,iOS7之後半透明模糊效果得到大範圍使用的比較大,現在也可以看到很多應用區域性用到了圖片模糊效果,關於圖片實現高斯模糊效果有三種方式,CoreImage,GPUImage(第三方開源類庫)和vImage。GPUImage沒怎麼用過,本文就講兩種方式Core Image和vImage。
Core Image
開始擼程式碼之前我們先來看一下實現的效果:
iOS5.0之後就出現了Core Image的API,Core Image的API被放在CoreImage.framework庫中,在iOS和OS X平臺上,Core Image都提供了大量的濾鏡(Filter),在OS X上有120多種Filter,而在iOS上也有90多。首先我們擴充套件一下UIImage,新增類方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
其中過濾的選項設定為高斯模糊:
vImage 方式
vImage屬於Accelerate.Framework,需要匯入Accelerate下的Accelerate標頭檔案,Accelerate主要是用來做數字訊號處理、影象處理相關的向量、矩陣運算的庫。影象可以認為是由向量或者矩陣資料構成的,Accelerate裡既然提供了高效的數學運算API,自然就能方便我們對影象做各種各樣的處理,模糊演算法使用的是vImageBoxConvolve_ARGB8888這個函式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
圖片模糊呼叫:
1 2 3 4 5 |
|
關於兩種方式的選擇的建議
效果:第一種Core Image設定模糊之後會在周圍產生白邊,vImage使用不存在任何問題;
效能:影象模糊處理屬於複雜的計算,大部分圖片模糊選擇的是vImage,效能最佳(沒有親自測試過,有興趣可以自己測試)
參考資料:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIGaussianBlur