50 lines
1.5 KiB
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!
|
|
}
|
|
}
|