2013-05-21 19 views

回答

4

您可以使用核心图像来做到这一点。

UIImage *bwImage = ... // Get your image from somewhere 
CGImageRef bwCGImage = bwImage.CGImage; 
CIImage *bwCIImage = [CIImage imageWithCGImage:bwCGImage]; 

CIFilter *filter = [CIFilter filterWithName:@"CIHueAdjust"]; 

// Change the float value here to change the hue 
[filter setValue:[NSNumber numberWithFloat:0.5] forKey: @"inputAngle"]; 

// input black and white image 
[filter setValue:bwCIImage forKey:kCIInputImageKey]; 

// get output from filter 
CIImage *hueImage = [filter valueForKey:kCIOutputImageKey]; 

CIContext *context = [CIContext contextWithOptions:nil]; 

CGImageRef cgImage = [context createCGImage:hueImage 
           fromRect:[hueImage extent]]; 

UIImage *coloredImage = [UIImage imageWithCGImage:cgImage]; 
CGImageRelease(cgImage); 

更多信息请参阅文档:Core Image Filter Reference

+0

谢谢你的答案,但我不明白我在哪里设置我要替换的颜色? (黑色由蓝色和白色为黄色) – user2401221

+0

对于实际颜色替换,您需要使用不同的过滤器。 'CIColorCube'可能就是你想要的。在ColorCube中,您可以定义颜色如何映射到不同的颜色。您可以在答案中的链接中阅读有关CIColorCube的内容。 – Fogmeister

+0

我看不到任何CIColorCube的例子,我可以在哪里找到一个? – user2401221