Take the 2-minute tour ×

I'm creating a mask based on DeviceGray color space based image.

What basically I want to do is to change all sorts of gray (beside black) pixels into white and leave black pixels as they are.

So I want my image to be consisted with black and white pixels.

Any idea how to achieve that using CoreGraphics means ?

Please dont offer running all over the pixels in the loop

share|improve this question

1 Answer 1

up vote 2 down vote accepted

Use CGImageCreateWithMaskingColors and CGContextSetRGBFillColor together like this:

CGImageRef myMaskedImage;
const CGFloat myMaskingColors[6] = { 0, 124, 0, 68, 0, 0 };
myColorMaskedImage = CGImageCreateWithMaskingColors (image,
CGContextSetRGBFillColor (myContext, 0.6373,0.6373, 0, 1);
CGContextFillRect(context, rect);
CGContextDrawImage(context, rect, myColorMaskedImage);

By the way, the fill color is mentioned at the CGImageCreateWithMaskingColors discussion.

share|improve this answer
I've applied the code provided here on my picture still i get the gray pixels, I need to keep black pixels and convert all sorts on gray pixels into white. –  deimus May 23 '12 at 19:25
@deimus You should change the color range and the fill color in the snippet, did you do that ? –  A-Live May 23 '12 at 19:52
hah sorry I'm just too noob yet in Quartz :), Just to confirm is following range right to get all gray colors beside black {1, 255, 1, 255, 1, 255} –  deimus May 23 '12 at 20:03
That must be correct for RGB, see the formula at the documentation link. –  A-Live May 23 '12 at 20:53
Thanks man I got it working :) –  deimus May 24 '12 at 18:11

Your Answer


