gpt4 book ai didi

ios - 在 viewDidLoad block UI 中对图像使用 GaussianBlur

转载 作者:行者123 更新时间:2023-11-29 11:50:22 25 4
gpt4 key购买 nike

我在 viewController 的 viewDidLoad 中使用以下函数创建模糊效果

func applyBlurEffect(image: UIImage){

let imageToBlur = CIImage(image: image)!
let blurfilter = CIFilter(name: "CIGaussianBlur")!
blurfilter.setValue(10, forKey: kCIInputRadiusKey)
blurfilter.setValue(imageToBlur, forKey: "inputImage")
let resultImage = blurfilter.value(forKey: "outputImage") as! CIImage
let croppedImage: CIImage = resultImage.cropping(to: CGRect(x:0,y: 0,width: imageToBlur.extent.size.width,height: imageToBlur.extent.size.height))
let context = CIContext(options: nil)
let blurredImage = UIImage (cgImage: context.createCGImage(croppedImage, from: croppedImage.extent)!)
self.backImage.image = blurredImage


}

但是这段代码阻塞了 UI,延迟 3-4 秒后 viewController 打开。我不想在没有 blurEffect 的情况下呈现 UI,也不希望用户在打开 viewController 时等待 3-4 秒。请为此问题提供最佳解决方案。

最佳答案

GPUImage ( https://github.com/BradLarson/GPUImage ) 模糊效果确实比 CoreImage 快得多:

extension UIImage {
func imageWithGaussianBlur() -> UIImage? {
let source = GPUImagePicture(image: self)
let gaussianFilter = GPUImageGaussianBlurFilter()
gaussianFilter.blurRadiusInPixels = 2.2
source?.addTarget(gaussianFilter)
gaussianFilter.useNextFrameForImageCapture()
source?.processImage()
return gaussianFilter.imageFromCurrentFramebuffer()
}
}

但是小的延迟仍然是可能的(取决于图像大小),所以如果你不能在 View 加载之前预处理图像,我建议先调整图像大小,模糊并显示结果缩略图,然后在原始图像在后台队列中处理,用模糊的原始图像替换缩略图。

关于ios - 在 viewDidLoad block UI 中对图像使用 GaussianBlur,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com