如何在Swift5和iOS13中使用CIFilter sunbeamsGenerator?

How to use CIFilter sunbeamsGenerator in Swift 5 and iOS 13?

拜托,有人可以为我提供 Swift 5 和 iOS 13 中 CIFilter sunbeamsGenerator 的示例代码吗?

我正在尝试创建一个扩展来应用这个过滤器,但我遇到了这个错误:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputImage.'

该代码适用于模糊滤镜但不适用于 sunbeamsGenerator

import UIKit
import CoreImage.CIFilterBuiltins

public extension UIImage {

public func withBlurFilter() -> UIImage {
       let ciImage = CIImage(image: self)!
       let filter = CIFilter.gaussianBlur()
       filter.inputImage = ciImage
       filter.radius = 30
       let vintage = ciImage.applyingFilter(filter.name)
       return vintage.uiImage()
   }

    public func withSunFilter() -> UIImage {
        let ciImage = CIImage(image: self)!
        let filter = CIFilter.sunbeamsGenerator()
        let sunbeam = ciImage.applyingFilter(filter.name)
        return sunbeam.uiImage()
    }

}

提前致谢,我是 CoreImage 的新手

CISunbeamsGenerator 不需要输入图像 – 它会生成阳光效果(因此得名),您可以使用它来混合其他图像。

当您调用 ciImage.applyingFilter(...) 时,它会尝试将图像作为 inputImage 分配给给定的过滤器。但是生成器没有 属性,因此出现错误。

您可以改为这样做:

public func withSunFilter() -> UIImage {
    let ciImage = CIImage(image: self)!
    let filter = CIFilter.sunbeamsGenerator()
    let sunbeam = filter.outputImage!
    let output = sunbeam.composited(over: ciImage)
    return output.uiImage
}

检查 parameters of CISumbeamsGenerator 看看你能用它做什么。