Skip to content

Instantly share code, notes, and snippets.

@iosdevie
Created June 29, 2021 12:56
Show Gist options
  • Save iosdevie/740ec53925db8ed4e26985c0912ed688 to your computer and use it in GitHub Desktop.
Save iosdevie/740ec53925db8ed4e26985c0912ed688 to your computer and use it in GitHub Desktop.
func maskInputImage(_ buffer: CVPixelBuffer){
let bgImage = UIImage(named: "background")!
let input = CIImage(cgImage: inputImage.cgImage!)
let mask = CIImage(cvPixelBuffer: buffer)
let background = CIImage(cgImage: bgImage.cgImage!)
let maskScaleX = input.extent.width / mask.extent.width
let maskScaleY = input.extent.height / mask.extent.height
let maskScaled = mask.transformed(by: __CGAffineTransformMake(maskScaleX, 0, 0, maskScaleY, 0, 0))
let backgroundScaleX = input.extent.width / background.extent.width
let backgroundScaleY = input.extent.height / background.extent.height
let backgroundScaled = background.transformed(by: __CGAffineTransformMake(backgroundScaleX, 0, 0, backgroundScaleY, 0, 0))
let blendFilter = CIFilter.blendWithMask()
blendFilter.inputImage = input
blendFilter.backgroundImage = backgroundScaled
blendFilter.maskImage = maskScaled
if let blendedImage = blendFilter.outputImage{
let ciContext = CIContext(options: nil)
let filteredImageRef = ciContext.createCGImage(blendedImage, from: blendedImage.extent)
let maskDisplayRef = ciContext.createCGImage(maskScaled, from: maskScaled.extent)
self.outputImage = UIImage(cgImage: maskDisplayRef!)
self.finalOutputImage = UIImage(cgImage: filteredImageRef!)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment