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

问题描述 投票:0回答:1

[请为我提供Swift 5和iOS 13中CIFilter sunbeamsGenerator的示例代码吗?

我正在尝试创建扩展程序以应用此过滤器,但出现此错误:

***由于未捕获的异常'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的新手

ios swift core-image cifilter
1个回答
0
投票

[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以查看您可以做什么。

© www.soinside.com 2019 - 2024. All rights reserved.