2015-04-07 2 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, что означает, с нулевыми вариантами для создания CIContext.But при использовании процессора, то код заклинивание enter image description here на - [CIContext createCGImage: fromRect:] Стек выглядит следующим образом. Кажется, sdk попытался использовать OpenCL для вычисления, но не смог.CIContext createCGImage: fromRect: застряли на семафоре при использовании CPU

ответ

0

Здесь, по крайней мере, это обходное решение: на iOS 8 и более поздних версиях вам больше не нужно указывать kCIContextUseSoftwareRenderer.

+0

Я решил перейти на использование рамки ускорения, чтобы сделать заусенцы. Я использую его, чтобы размыть снимок при переходе на задний план. Применение для ресурса gpu при переходе на задний план иногда приводит к сбою, поскольку Apple ограничивает gpu, если не на переднем плане. Спасибо, в любом случае. – user3349433

Смежные вопросы