// // UIImage-Extensions.swift // NetNewsWire // // Created by Maurice Parker on 9/29/19. // Copyright © 2019 Ranchero Software. All rights reserved. // import UIKit extension CGImage { func isDark() -> Bool { guard let imageData = self.dataProvider?.data else { return false } guard let ptr = CFDataGetBytePtr(imageData) else { return false } let length = CFDataGetLength(imageData) var visiblePixels = 0 var darkPixels = 0 for i in stride(from: 0, to: length, by: 4) { let r = ptr[i] let g = ptr[i + 1] let b = ptr[i + 2] let a = ptr[i + 3] let luminance = (0.299 * Double(r) + 0.587 * Double(g) + 0.114 * Double(b)) if Double(a) > 0.0 { visiblePixels += 1 if luminance < 50 { darkPixels += 1 } } } return Double(darkPixels) / Double(visiblePixels) > 0.4 } } extension UIImage { func isDark() -> Bool { return self.cgImage?.isDark() ?? false } }