I am creating a monochrome image with the following code:
CGColorSpaceRef cgColorSpace = CGColorSpaceCreateDeviceGray();
CGImageRef cgImage = CGImageCreate (width, height, 1, 1, rowBytes, colorSpace, 0, dataProvider, decodeValues, NO, kCGRenderingIntentDefault);
where decodeValues is an array of 2 CGFloat‘s, equal to {0,1}. This gives me a fine image, but apparently my data (which comes from a PDF image mask) is black-on-white instead of white-on-black. To invert the image, I tried to set the values of decodeValues to {1,0}, but this did not change anything at all. Actually, whatever nonsensical values I put into decodeValues, I get the same image.
Why is decodeValues ignored here? How do I invert black and white?
here’s some code for creating and drawing a mono image. It’s the same as yours but with more context (and without necessary cleanup):
If i change the decode array to
CGFloat decode[] = {0.0, 0.0};i always get a black image.If you have tried that and it didn’t have any effect (you say you get the same image whatever values you use), either: you aren’t actually passing in those values but you think you are, or: somehow you aren’t actually examining the output of CGImageCreate.