HaishinKit.swift/Examples/iOS/VisualEffect.swift

50 lines
1.5 KiB
Swift

import AVFoundation
import HaishinKit
import UIKit
final class PronamaEffect: VideoEffect {
let filter: CIFilter? = CIFilter(name: "CISourceOverCompositing")
var extent = CGRect.zero {
didSet {
if extent == oldValue {
return
}
UIGraphicsBeginImageContext(extent.size)
let image = UIImage(named: "Icon.png")!
image.draw(at: CGPoint(x: 50, y: 50))
pronama = CIImage(image: UIGraphicsGetImageFromCurrentImageContext()!, options: nil)
UIGraphicsEndImageContext()
}
}
var pronama: CIImage?
override init() {
super.init()
}
override func execute(_ image: CIImage, info: CMSampleBuffer?) -> CIImage {
guard let filter: CIFilter = filter else {
return image
}
extent = image.extent
filter.setValue(pronama!, forKey: "inputImage")
filter.setValue(image, forKey: "inputBackgroundImage")
return filter.outputImage!
}
}
final class MonochromeEffect: VideoEffect {
let filter: CIFilter? = CIFilter(name: "CIColorMonochrome")
override func execute(_ image: CIImage, info: CMSampleBuffer?) -> CIImage {
guard let filter: CIFilter = filter else {
return image
}
filter.setValue(image, forKey: "inputImage")
filter.setValue(CIColor(red: 0.75, green: 0.75, blue: 0.75), forKey: "inputColor")
filter.setValue(1.0, forKey: "inputIntensity")
return filter.outputImage!
}
}