Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
UIImage tint with UIColor in Swift
extension UIImage
func tint(color: UIColor, blendMode: CGBlendMode) -> UIImage
let drawRect = CGRectMake(0.0, 0.0, size.width, size.height)
UIGraphicsBeginImageContextWithOptions(size, false, scale)
let context = UIGraphicsGetCurrentContext()
CGContextClipToMask(context, drawRect, CGImage)
drawInRect(drawRect, blendMode: blendMode, alpha: 1.0)
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
return tintedImage
func tint(image: UIImage, color: UIColor) -> UIImage
let ciImage = CIImage(image: image)
let filter = CIFilter(name: "CIMultiplyCompositing")
let colorFilter = CIFilter(name: "CIConstantColorGenerator")
let ciColor = CIColor(color: color)
colorFilter.setValue(ciColor, forKey: kCIInputColorKey)
let colorImage = colorFilter.outputImage
filter.setValue(colorImage, forKey: kCIInputImageKey)
filter.setValue(ciImage, forKey: kCIInputBackgroundImageKey)
return UIImage(CIImage: filter.outputImage)!

This comment has been minimized.

Copy link

commented Nov 27, 2015

Hi Alex, great code. I have used the extension you wrote but I had to add this two lines after the context`s creation
// flip the image
CGContextScaleCTM(context, 1.0, -1.0)
CGContextTranslateCTM(context, 0.0, -self.size.height)
Because the final image appears flipped. Maybe it is useful for you.



This comment has been minimized.

Copy link

commented Dec 18, 2015

Here is a gist with an alternative implementation:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.