Search code examples
iphonecolorsquartz-graphicsquartz-2d

Make an image black and white?


I have another quartz 2d (iphone) question:

How to change all the colors of an ImageView to black and white and leave only red ???

DD


Solution

  • UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];  this image we get from UIImagePickerController
    
        CGColorSpaceRef colorSapce = CGColorSpaceCreateDeviceGray();
        CGContextRef context = CGBitmapContextCreate(nil, originalImage.size.width, originalImage.size.height, 8, originalImage.size.width, colorSapce, kCGImageAlphaNone);
        CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
        CGContextSetShouldAntialias(context, NO);
        CGContextDrawImage(context, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), [originalImage CGImage]);
    
        CGImageRef bwImage = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSapce);
    
        UIImage *resultImage = [UIImage imageWithCGImage:bwImage]; // This is result B/W image.
        CGImageRelease(bwImage);
    

    This is something that i found on other forums, AND IT SEEMS TO WORK!!!