Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hlung/e51f29b299891ad8f796f5af9a98d189 to your computer and use it in GitHub Desktop.
Save hlung/e51f29b299891ad8f796f5af9a98d189 to your computer and use it in GitHub Desktop.
Demonstrate how to use CIFilter.colorAbsoluteDifference() on macOS
import Cocoa
import CoreImage
import CoreImage.CIFilterBuiltins
let nextButtonImage = NSImage(named: "next button")!
let startGameButtonImage = NSImage(named: "start game button")!
computeImageDifference(inputImage: nextButtonImage, inputImage2: startGameButtonImage)
// MARK: -
extension NSImage {
var ciImage: CIImage? {
guard let cgImage = cgImage(forProposedRect: nil, context: nil, hints: nil) else { return nil }
return CIImage(cgImage: cgImage)
}
}
func computeImageDifference(inputImage: NSImage, inputImage2: NSImage) -> NSImage? {
guard let inputImage = inputImage.ciImage else { return nil }
guard let inputImage2 = inputImage2.ciImage else { return nil }
let context = CIContext()
let currentFilter = CIFilter.colorAbsoluteDifference()
currentFilter.inputImage = inputImage
currentFilter.inputImage2 = inputImage2
guard let outputImage = currentFilter.outputImage else { return nil }
guard let result = context.createCGImage(
outputImage,
from: outputImage.extent
) else { return nil }
return NSImage(cgImage: result, size: CGSize(width: result.width, height: result.height))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment