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 juliengdt/aa0554bc32d1f34c1f247e1b140115f1 to your computer and use it in GitHub Desktop.
Save juliengdt/aa0554bc32d1f34c1f247e1b140115f1 to your computer and use it in GitHub Desktop.
UIImage+BrightnessExtensions.swift
extension CGImage {
var brightness: Double {
get {
let imageData = self.dataProvider?.data
let ptr = CFDataGetBytePtr(imageData)
var x = 0
var result: Double = 0
for _ in 0..<self.height {
for _ in 0..<self.width {
let r = ptr![0]
let g = ptr![1]
let b = ptr![2]
result += (0.299 * Double(r) + 0.587 * Double(g) + 0.114 * Double(b))
x += 1
}
}
let bright = result / Double (x)
return bright
}
}
}
extension UIImage {
var brightness: Double {
get {
return (self.cgImage?.brightness)!
}
}
}
@brett-eugenelabs
Copy link

Isn't ptr just sampling the same pixel over and over ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment