2014-05-06 20 views
5

Come mascherare un'immagine con un'altra immagine con pixel non trasparenti? E.g.iOS SDK - Image masking

enter image description here

Quando l'immagine maschera è nera & bianco, io uso questa funzione:

- (UIImage *)maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
     CGImageGetHeight(maskRef), 
     CGImageGetBitsPerComponent(maskRef), 
     CGImageGetBitsPerPixel(maskRef), 
     CGImageGetBytesPerRow(maskRef), 
     CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 
} 

Ma come fare questo nel mio caso?

risposta

5

Ecco i passaggi, per ottenere il risultato

1) Creare la visualizzazione di un'immagine, e calcolare la dimensione ottimale per esso (+ opzione aspectFit set)

2) Ottenere la vista cornice dell'immagine, e creare una maschera con che le opzioni (cioè scalare l'immagine maschera predefinita)

3) Visualizza immagine maschera, con la maschera creata

 
    UIImageView *maskView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star_mask_alpha.png"]]; 
    self.needsMaskImageView.layer.mask = maskView.layer; 
    [self.needsMaskImageView setNeedsDisplay];