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

标签 ios swift core-image cifilter

请问有人可以为我提供 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看看你能用它做什么。

关于ios - 如何在 Swift 5 和 iOS 13 中使用 CIFilter sunbeamsGenerator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768604/

相关文章:

ios - 对成员 'upload(_:_:headers:file:)' 的模糊引用

ios - AVPlayerLoop 没有无缝循环 - Swift 4

ios - MBProgressHUD 添加到 navigationController.view 而不禁用 userInteraction

ios - SpriteKit : Getting node at CGPoint

ios - 使用 Core Graphics 制作饼图

ios - 带有 GLSL 的 CIKernel 白色像素

swift - 使用 Core Image 缩放图像是裁剪而不是缩放

objective-c - 移动的球和线之间的碰撞

swift -++ 后增量运算符的替代方案?

ios - 核心图像 - 在 CMSampleBufferRef 上渲染透明图像导致其周围出现黑框