表示点击无效或者用户离线的情况下通常会使用一些灰度图片。在iPhone中如何将普通图片转换成相应的灰度图像呢?下面这段代码给出了答案。

 
  
  1. UIImage *grayImage(UIImage *source)  
  2. {  
  3.     int width = source.size.width;  
  4.     int height = source.size.height;  
  5.  
  6.     CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();  
  7.  
  8.     CGContextRef context = CGBitmapContextCreate (nil,  
  9.                          width,  
  10.                          height,  
  11.                          8,      // bits per component  
  12.                          0,  
  13.                          colorSpace,  
  14.                          kCGImageAlphaNone);  
  15.  
  16.     CGColorSpaceRelease(colorSpace);  
  17.  
  18.     if (context == NULL) {  
  19.         return nil;  
  20.     }  
  21.  
  22.     CGContextDrawImage(context,  
  23.         CGRectMake(0, 0, width, height), source.CGImage);  
  24.  
  25.     UIImage *grayImage = [UIImage p_w_picpathWithCGImage:CGBitmapContextCreateImage(context)];  
  26.     CGContextRelease(context);  
  27.  
  28.     return grayImage;  

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