Question

I have a issue with masking images. I do game "puzzle" and have to make custom images. I found and tried 2 way of custom cropping:

  1. Using CALayer.mask property.
  2. Using UIImage.mask property.

In first option i create my custom path, then assign it to CAShapeLayer.path property, then assign CAShapeLayer to CALayer.mask property. At the end i have custom cropped image. In second option i use firstly use CGImageMaskCreate() method (i use previously created black mask images of puzzle), then CGContextClipToMask(). In either options i have problem with performance (mostly when i crop image into 16 puzzles and drag in over the screen).

Is there any other approaches to crop image in custom way. (I don't know how to solve performance problem). Thanks in advance.

Was it helpful?

OTHER TIPS

Try this:

-(UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}

...

UIImage *temp_image = [self imageByCropping:original_image toRect:clipping_rectangle];

Maybe you should consider about drawing the image in a new image with an alpha background an overdrawing the current background. I mean: All pixel which are inside the jigsaw piece: normal colour, all pixels outside the jigsaw piece = transparent. And then try to blend it to the new background or overdrawing it.

Just my 2 cents. :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top