CIFilter применяется к изображению не работает - Swift - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь применить CIFilter к изображению, которое уже отображается в моем imageView в моем приложении с одним представлением, но оно, кажется, не применило фильтр.Пожалуйста, кто-нибудь может посоветовать?Мое входное изображение выглядит точно так же.

SWIFT:

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

1 Ответ

0 голосов
/ 21 мая 2018

Это в комментариях, но вот полный (и лучше отформатированный) ответ о том, как установить вызов на 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

}
...