First, I would check to see if the context returned from your CGBitmapContextCreate
call is valid (that is, make sure context != NULL
). I'd also check to make sure your originally loaded image is valid (so, make sure img != nil
).
If your context is nil, it may be because your image size is unreasonable, or else your pixel data format is unavailable. Try using kCGImageAlphaPremultipliedLast
instead?
Second, you don't need to use CGBitmapContextGetData
- you can just use the pixelData
pointer you passed in in the first place. You should also CGContextRelease
your context before leaving your initWithImage:
function to avoid a leak.
I also note that you're using kCGImageAlphaPremultipliedFirst
. This means that the alpha component is first, not last, in your image, so you want an offset of 0 for the alpha component in your alphaAtX:y:
function.
Does any of that help?