首页 > 解决方案 > CIFilter应用于图像不起作用 - 迅速

问题描述

我正在尝试将 CIFilter 应用于已在我的单视图应用程序中的 imageView 中显示的图像,但它似乎没有应用过滤器。请问有人可以建议吗?我的输入图像看起来完全一样。

迅速:

let filter = CIFilter.init(name: "CIHueAdjust")
let context = CIContext()
var extent: CGRect!
var scaleFactor: CGFloat!

@IBOutlet weak var img: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    let ciImage = CIImage.init(image: img.image!)

    filter?.setDefaults()
    filter?.setValue(ciImage, forKeyPath: kCIInputImageKey)
    let result = filter?.outputImage
    print("result: \(result)")

    var image = UIImage.init(cgImage: context.createCGImage(result!, from: result!.extent)!)
    img.image = image


    img.image = image
}

安慰:

 result: Optional(<CIImage: 0x1c001a7a0 extent [0 0 2016 1512]>
 affine [1 0 0 -1 0 1512] extent=[0 0 2016 1512] opaque
colormatch "sRGB IEC61966-2.1"_to_workingspace extent=[0 0 2016 1512] opaque
  IOSurface 0x1c401a780(169) seed:1 YCC420f 601 alpha_one extent=[0 0 2016 1512] opaque

标签: iosswiftcore-imagecifilter

解决方案


它在评论中,但这里是关于如何CIHueAdjust使用 Swift 4 设置对 的调用的完整(和更好的格式)答案:

let filter = CIFilter(name: "CIHueAdjust")
let context = CIContext()
var extent: CGRect!
var scaleFactor: CGFloat!

@IBOutlet weak var img: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    let ciImage = CIImage(image: img.image!)

    // Note: you may use kCIInputImageKey for inputImage
    filter?.setValue(ciImage, forKey: "inputImage")
    filter?.setValue(Float(1), forKey: "inputAngle")
    let result = filter?.outputImage

    var image = UIImage(cgImage: context.createCGImage(result!, from: result!.extent)!)
    img.image = image

}

推荐阅读