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 mzkaramat/a5dc3dbf2c79b3c3c9f8b8b1134e1f3b to your computer and use it in GitHub Desktop.
Save mzkaramat/a5dc3dbf2c79b3c3c9f8b8b1134e1f3b to your computer and use it in GitHub Desktop.
UIImage extension for creating a new image with adjusted exposure
extension UIImage {
/**
Returns a new `UIImage` with an adjusted exposure value.
- Parameter ev: The amount to adjust the exposure value. Negative for darker, positive for lighter.
- Returns: a new `UIImage` with an adjusted exposure value.
*/
func imageWithAdjustedExposure(ev: Double) -> UIImage? {
guard let cgImage = self.CGImage else { return nil }
let filterName = "CIExposureAdjust"
guard let filter = CIFilter(name: filterName) else {
print("No filter with name: \(filterName).")
return nil
}
let inputImage = CoreImage.CIImage(CGImage: cgImage)
filter.setValue(inputImage, forKey: kCIInputImageKey)
filter.setValue(ev, forKey: kCIInputEVKey)
guard let filteredImage = filter.outputImage else {
print("No output image.")
return nil
}
let context = CIContext(options: nil)
return UIImage(CGImage: context.createCGImage(filteredImage, fromRect: filteredImage.extent))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment