Search code examples
objective-ccolorsuiimagepixelrgba

How to set RGBA Color of a Pixel of an UIImage


I am looking for a possibility to set (change) the RGBA color of a Pixel of an UIImage for my Iphone Application. (I actually want to implement some floodfill stuff)

So I need something like this:

-(void) setPixelColorOfImage: (UIImage*) img atXCord: (int) x atYCord: (int) y
withRedColor: (CGFloat) red blueColor: (CGFloat) blue greenColor: (CGFloat) green
alpha: (CGFloat) alpha  {

// need some code her

}

Because this method will be called quite often, it shouldn't be too slow.

Please help.


Solution

  • UIImage is not (externally) mutable, so you must copy, then edit, then convert to UIImage.

    Copy

    • create a CGBitmapContext
    • draw the source image onto it

    Edit

    • get a hold of the context's pixel buffer
    • mutate that pixel buffer

    Convert to UIImage

    • copy a CGImage representation of the context
    • create a new UIImage from the CGImage

    fwiw, the form can also be used on osx (using NSImage).