Change image color in iphone sdk

I have an image and I want to change the color of this image using programmatically.

enter image description here

& I want to change the color of this image

enter image description here

+6
source share
6 answers

UPDATE:

Use this method ...

-(UIImage *)imageNamed:(NSString *)name withColor:(UIColor *)color { // load the image UIImage *img = [UIImage imageNamed:name]; // begin a new image context, to draw our colored image onto UIGraphicsBeginImageContext(img.size); // get a reference to that context we created CGContextRef context = UIGraphicsGetCurrentContext(); // set the fill color [color setFill]; // translate/flip the graphics context (for transforming from CG* coords to UI* coords CGContextTranslateCTM(context, 0, img.size.height); CGContextScaleCTM(context, 1.0, -1.0); // set the blend mode to color burn, and the original image CGContextSetBlendMode(context, kCGBlendModeColorBurn); CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height); CGContextDrawImage(context, rect, img.CGImage); // set a mask that matches the shape of the image, then draw (color burn) a colored rectangle CGContextClipToMask(context, rect, img.CGImage); CGContextAddRect(context, rect); CGContextDrawPath(context,kCGPathFill); // generate a new UIImage from the graphics context we drew onto UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //return the color-burned image return coloredImg; } 

Use it as below ...

 yourImageView.image = [self imageNamed:@"yourImageName" withColor:[UIColor orangeColor]]; 

hope this helps you .....

+13
source

Thanks for the method - it works. However, in terms of image quality, I found the answer here to make a more accurate color image:

fooobar.com/questions/142853 / ...

+3
source

Here is the Swift version:

 extension UIImage { func colorizeWith(color: UIColor) -> UIImage { UIGraphicsBeginImageContext(self.size) let context = UIGraphicsGetCurrentContext() color.setFill() CGContextTranslateCTM(context, 0, self.size.height) CGContextScaleCTM(context, 1.0, -1.0) // set the blend mode to color burn, and the original image CGContextSetBlendMode(context, kCGBlendModeNormal); let rect = CGRectMake(0, 0, self.size.width, self.size.height); CGContextDrawImage(context, rect, self.CGImage); // set a mask that matches the shape of the image, then draw (color burn) a colored rectangle CGContextClipToMask(context, rect, self.CGImage); CGContextAddRect(context, rect); CGContextDrawPath(context,kCGPathFill); // generate a new UIImage from the graphics context we drew onto let coloredImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //return the color-burned image return coloredImage; } } 
+3
source

You can try Ankish Jain answer , it works for me.

 theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView setTintColor:[UIColor redColor]]; 
+2
source

ColorImage Color Filters do such tasks perfectly - I find them a bit simpler than using the Core Graphic (CG ...) classes: they work by letting you adjust the RGB and Alpha characteristics of the image that I have used to change white QRCode color to color. RGBA is white (1,1,1,1) in your case, I believe you should change the color. Just check the CI documentation for Apple, there are dozens of filters available for CIColorMatrix, only one of them.

 CIImage *beginImage = [CIImage imageWithCGImage:image.CGImage]; CIContext *context = [CIContext contextWithOptions:nil]; CIFilter *filtercd = [CIFilter filterWithName:@"CIColorMatrix" //rgreen keysAndValues: kCIInputImageKey, beginImage, nil]; [filtercd setValue:[CIVector vectorWithX:0 Y:1 Z:1 W:0] forKey:@"inputRVector"]; // 5 [filtercd setValue:[CIVector vectorWithX:1 Y:0 Z:1 W:0] forKey:@"inputGVector"]; // 6 [filtercd setValue:[CIVector vectorWithX:1 Y:1 Z:0 W:0] forKey:@"inputBVector"]; // 7 [filtercd setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"]; // 8 [filtercd setValue:[CIVector vectorWithX:1 Y:1 Z:0 W:0] forKey:@"inputBiasVector"]; CIImage *doutputImage = [filtercd outputImage]; CGImageRef cgimgd = [context createCGImage:doutputImage fromRect:[doutputImage extent]]; UIImage *newImgd = [UIImage imageWithCGImage:cgimgd]; filterd.image = newImgd; CGImageRelease(cgimgd); 
+1
source

Like I said here iPhone - How did you color the image? in my opinion the best way to colorize an image from iOS 7 is to use

 myImageView.image = [[UIImage imageNamed:@"myImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

and then change the tintColor of the image to View or whatever the image contains.

0
source

All Articles