如何在 Swift 5 和 iOS 13 中使用 CIFilter sunbeamsGenerator?
Posted
技术标签:
【中文标题】如何在 Swift 5 和 iOS 13 中使用 CIFilter sunbeamsGenerator?【英文标题】:How to use CIFilter sunbeamsGenerator in Swift 5 and iOS 13? 【发布时间】:2020-01-16 11:21:51 【问题描述】:请问,有人可以为我提供 Swift 5 和 ios 13 中 CIFilter
sunbeamsGenerator 的示例代码吗?
我正在尝试创建一个扩展来应用此过滤器,但我遇到了这个错误:
*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键输入图像的键值编码。”
代码适用于模糊滤镜,但不适用于 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 的新手
【问题讨论】:
【参考方案1】: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
,看看你能用它做什么。
【讨论】:
谢谢弗兰克,我检查了,我修改并设置了一些默认值。但是我尝试了所有选项,但总是遇到同样的错误。我默认尝试了这个参数配置: let params: [String: Any] = [ "inputCenter": CIVector(cgPoint: CGPoint(x: 150, y: 150)), "inputColor": CIColor(red: 1, green: 1、蓝色:1)、“inputSunRadius”:40、“inputMaxStriationRadius”:2.58、“inputStriationStrength”:0.5、“inputStriationContrast”:1.375、“inputTime”:0] 嗯...真的是同样的错误(inputImage
)?这很奇怪,因为您在不使用applyingFilter()
时没有设置它。
解决了!非常感谢您的大力帮助!以上是关于如何在 Swift 5 和 iOS 13 中使用 CIFilter sunbeamsGenerator?的主要内容,如果未能解决你的问题,请参考以下文章
当用户使用 iOS 13 Swift 5 点击推送通知时,在特定视图中打开应用程序
如何在 WKWebView swift 5 中更改字体大小?