开发者

iPhone SDK Invert the Colors of a UIImage

开发者 https://www.devze.com 2022-12-20 16:48 出处:网络
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,

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 开发者_Go百科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


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


Yes. You should be able to do this in a CALayer by the calls to CGContext, or directly with a buffer on CGImage. There are other examples on how to go back and forth with save image from a UIView also on Stackoverflow.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号