//通過修改圖片飽和度將圖片變為黑白(鏤空位置不影響)
- (UIImage*) convertImageToGreyScale:(UIImage*) image
{
CIImage *beginImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter * filter = [CIFilter filterWithName:@"CIColorControls"];
[filter setValue:beginImage forKey:kCIInputImageKey];
//飽和度 0---2 默認為1
[filter setValue:[NSNumber numberWithFloat:0] forKey:@"inputSaturation"];
// 得到過濾后的圖片
CIImage *outputImage = [filter outputImage];
// 轉換圖片, 創建基於GPU的CIContext對象
CIContext *context = [CIContext contextWithOptions: nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *newImg = [UIImage imageWithCGImage:cgimg];
// 釋放C對象
CGImageRelease(cgimg);
return newImg;
}
//將圖片變為黑邊反轉(鏤空部位為黑色)
- (UIImage*) convertImageToGreyScale:(UIImage*) image {
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
CGContextDrawImage(context, imageRect, [image CGImage]);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:imageRef];
CGColorSpaceRelease(colorSpace); CGContextRelease(context);
CFRelease(imageRef);
return newImage;
}