Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone SDK Invert the Colors of a UIImage

I've got an iPhone app that allows a person to draw something on the screen with their finger. They draw with a white line on a black background. However, when I upload this image to the web server, the line itself is white. I have been trying to work through the core graphics libraries in search of a way to invert the colour of the drawn image. There is no background set so it should be transparent. Doing an image invert should swap the white to black.

Does anyone know if this is possible through the core graphics library?

Cheers

like image 609
user273169 Avatar asked Dec 14 '22 00:12

user273169


1 Answers

I ended up finding a good way of doing it. Instead of simply making the background of the original image transparent, I make it black. Now there are white lines on a black background. Then it was simply a matter of doing:

UIGraphicsBeginImageContext(image.size);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeDifference);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(),[UIColor whiteColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height));
UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

The variable 'image' is the original image with white line on black background. Thanks for your help David Sowsy

like image 56
user273169 Avatar answered Dec 26 '22 23:12

user273169