2015-04-07 130 views
0
let context = CIContext(options:[kCIContextUseSoftwareRenderer:true]) 
    let inputImage = CIImage(CGImage: image.CGImage) 
    let filter = CIFilter(name:"CIGaussianBlur") 
    filter.setValue(inputImage, forKey: kCIInputImageKey) 
    let result = filter .valueForKey(kCIOutputImageKey) as CIImage 
    let cgImage = context.createCGImage(result, fromRect: inputImage.extent()) 
    let returnImage = UIImage(CIImage: result, scale: UIScreen.mainScreen().scale, orientation: .Up) 
    return returnImage! 

使用GPU,它具有無選項意味着使用CPU時創建CIContext.But時,代碼工作正常時,卡上旗語,代碼stucks enter image description here上 - [CIContext createCGImage: fromRect:] 堆棧如下。似乎sdk試圖使用OpenCL來計算,但失敗。CIContext createCGImage:fromRect:使用CPU

回答

0

至少,這是一種解決方法:在iOS 8和更高版本中,您不再需要指定kCIContextUseSoftwareRenderer。

+0

我決定更換使用Accelerate框架來做毛刺。我用它來模糊背景時的快照。有時候在後臺應用gpu資源會導致崩潰,因爲Apple在不前臺時會限制gpu。不管怎麼說,還是要謝謝你。 – user3349433