转自:http://bj007.blog.51cto.com/1701577/541525

 

-(UIImage*)getGrayImage:(UIImage*)sourceImage
{
int width = sourceImage.size.width;
int height = sourceImage.size.height;

CGColorSpaceRef colorSpace
= CGColorSpaceCreateDeviceGray();
CGContextRef context
= CGBitmapContextCreate (nil,width,height,8,0,colorSpace,kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);

if (context == NULL) {
return nil;
}

CGContextDrawImage(context,CGRectMake(
0, 0, width, height), sourceImage.CGImage);
UIImage
*grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
CGContextRelease(context);

return grayImage;
}

其中,CGColorSpaceCreateDeviceGray会创建一个设备相关的灰度颜色空间的引用。