Andrei Neacsu
Andrei Neacsu

Reputation: 1473

Iphone - Masking JPG images

I am coding a jigsaw puzzle and I need to mask the images to create puzzle pieces.

I am using pictures from an online server and they are *.JPG. When I mask them, the area that should be transparent is black.

Can I add the alpha channel programmatically? If yes, can you show me how?

Thanks a lot, Andrei

Upvotes: 1

Views: 521

Answers (1)

Andrei Neacsu
Andrei Neacsu

Reputation: 1473

I found the answer:

CGImageRef imageRef = self.CGImage;
size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);

// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error
CGContextRef offscreenContext = CGBitmapContextCreate(NULL,
                                                      width,
                                                      height,
                                                      8,
                                                      0,
                                                      CGImageGetColorSpace(imageRef),
                                                      kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);

// Draw the image into the context and retrieve the new image, which will now have an alpha layer
CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef);
CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext);
UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha];

// Clean up
CGContextRelease(offscreenContext);
CGImageRelease(imageRefWithAlpha);

return imageWithAlpha;

Upvotes: 4

Related Questions