1
我已經使用CIVignette
效果爲My Photo Editing應用程序。它基於Slider的Changing事件應用。我已經使用下面的代碼,我的問題是每當我增加滑塊的值Vignette效果出現,但每當我減少滑塊的值,Vignette效果不會減少。
請幫忙。無法降低使用UISlider的CIVignette效果
@IBAction func slider(_ sender: UISlider) {
let startImage = CIImage(image: imgEdited!)!
let vignetteFilter = CIFilter(name: "CIVignette")!
let radius = 5
vignetteFilter.setValue(startImage, forKey:kCIInputImageKey)
vignetteFilter.setValue(sender.value, forKey:"inputIntensity")
vignetteFilter.setValue(radius, forKey:"inputRadius")
let filteredImageData = vignetteFilter.value(forKey: kCIOutputImageKey) as! CIImage
let filteredImageRef = self.context.createCGImage(filteredImageData, from: filteredImageData.extent)
imgImage.image = UIImage.init(cgImage: filteredImageRef!)
self.imgEdited = imgImage.image
}
這是否能順利執行?爲什麼不使用'GLKView'和單個'CIContext'?通過這種方式,您可以使用GPU,並可以在GLKView中渲染* current * CIImage,並在共享/保存時輸出「UIImage」。我猜你會看到性能增加5-10倍。 (當然,在模擬器中你會看到幾乎相同或更多的下降,但是儘可能利用這些GPU。) – dfd
感謝您的評論@dfd。但是,'SO'在另一篇相關的文章中指出他不使用'GLKView'。 – Joe
謝謝。仍然 - 表現如何?我發現動態使用滑塊來改變「CIFilter」,並創建一個「UIImage」......非常結構。從我在輸出示例中看到的情況來看,情況就是這樣。 – dfd