2010-02-15 100 views
4

我有一个iPhone应用程序,允许用户用手指在屏幕上绘制某些东西。他们在黑色背景上画一条白线。但是,当我将这个图像上传到网络服务器时,线路本身是白色的。我一直在努力通过核心图形库来寻找反转绘制图像颜色的方法。没有背景设置,因此它应该是透明的。做一个图像反转应该把白色换成黑色。iPhone SDK反转UIImage的颜色

有谁知道这是否有可能通过核心图形库?

干杯

回答

-1

是的。您应该可以通过调用CGContext在CALayer中执行此操作,或直接使用CGImage上的缓冲区执行此操作。还有其他一些关于如何在Stackoverflow上使用UIView保存图像的例子。

+0

您可以在这里添加几条这些示例的链接吗? – Palimondo 2011-03-04 06:16:08

14

我最终找到了一个好办法。我不是简单地将原始图像的背景变成透明的,而是将它变成黑色。现在黑色背景上有白线。然后,它只是做的事:

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(); 

变量“形象”是用白线在黑色背景上的原始图像。感谢您的帮助David Sowsy

+0

你是如何将背景颜色设置为无色的? – Slee 2010-11-27 15:56:34