iPhone:如何改变UIImage的特定像素的颜色?

我有一个UIImage,我想改变它的特定像素的颜色,比如224 x 200像素。 我怎样才能做到这一点? 这甚至有可能吗? 提前致谢。

经过大量的search,我得到了确切的解决scheme,虽然我发现很多,但没有一个工作。 这是我得到的,它完美地工作 – :

// This method creates an image by changing individual pixels of an image. Color of pixel has been taken from an array of colours('avgRGBsOfPixel') -(void)createTexture{ self.sampleImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"whitebg.jpg"]]; CGRect imageRect = CGRectMake(0, 0, self.sampleImage.image.size.width, self.sampleImage.image.size.height); UIGraphicsBeginImageContext(sampleImage.image.size); CGContextRef context = UIGraphicsGetCurrentContext(); //Save current status of graphics context CGContextSaveGState(context); CGContextDrawImage(context, imageRect, sampleImage.image.CGImage); // And then just draw a point on it wherever you want like this: // CGContextFillRect(context, CGRectMake(x,y,1,1)); //Fix error according to @gsempe's comment int pixelCount =0; for(int i = 0 ; i<sampleImage.image.size.width ; i++){ for(int j = 0 ; j<sampleImage.image.size.height ; j++){ pixelCount++; int index = pixelCount/pixelCountForCalculatingAvgColor; // NSLog(@"Index : %d", index); if(index >= [avgRGBsOfPixel count]){ index = [avgRGBsOfPixel count] -1; NSLog(@"Bad Index"); } // if(pixelCount >9999){ // pixelCount = 9999; // NSLog(@"Bad Index"); // } UIColor *color = [avgRGBsOfPixel objectAtIndex:index]; float red ,green, blue ,alpha ; [color getRed:&red green:&green blue:&blue alpha:&alpha]; CGContextSetRGBFillColor(context, red , green, blue , 1); CGContextFillRect(context, CGRectMake(i,j,1,1)); } } // Then just save it to UIImage again: CGContextRestoreGState(context); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); [self.iv setImage:img]; 

}

核心graphics是可能的。 该链接有代码将您的图像转换为灰度。 您可以根据需要进行修改。

CGContextRef完成所有这一切。 你可以用这个做各种各样的魔法。

以下是一些基本用法的幻灯片 。