繁体   English   中英

如何在 Swift 5 和 iOS 13 中使用 CIFilter sunbeamsGenerator?

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

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

我正在尝试创建一个扩展来应用此过滤器,但出现此错误:

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键 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
}

检查CISumbeamsGenerator参数,看看你可以用它做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM