:
func blackWhiteImage(image: UIImage) -> Data? {
guard let ciImage = CIImage(image: image)?.applyingFilter("CIColorControls", withInputParameters: [kCIInputSaturationKey:0.0]) else { return nil }
UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)
defer { UIGraphicsEndImageContext() }
UIImage(ciImage: ciImage).draw(in: CGRect(origin: .zero, size: image.size))
guard let redraw = UIGraphicsGetImageFromCurrentImageContext() else { return nil }
return UIImagePNGRepresentation(redraw)
}
UIImage, :
extension UIImage {
var grayscale: UIImage? {
guard let ciImage = CIImage(image: self)?.applyingFilter("CIColorControls", withInputParameters: [kCIInputSaturationKey: 0]) else { return nil }
UIGraphicsBeginImageContextWithOptions(size, false, scale)
defer { UIGraphicsEndImageContext() }
UIImage(ciImage: ciImage).draw(in: CGRect(origin: .zero, size: size))
return UIGraphicsGetImageFromCurrentImageContext()
}
}
let profilePicture = UIImage(data: try! Data(contentsOf: URL(string:"http://i.stack.imgur.com/Xs4RX.jpg")!))!
if let grayscale = profilePicture.grayscale, let data = UIImagePNGRepresentation(grayscale) {
print(data.count)
}