Le tutoriel utilise cette méthode avec deux paramètres : image
y maskImage
vous devez les définir lorsque vous appelez la méthode. Un exemple d'appel pourrait ressembler à ceci, en supposant que la méthode est dans la même classe et que les images sont dans votre paquet :
Remarque - il est étonnant de constater que les images ne doivent même pas être de la même taille.
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
// result of the masking method
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (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 maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
// returns new image with mask applied
return maskedImage;
}
Après que vous ayez fourni votre code, j'y ai ajouté quelques chiffres en tant que commentaires pour référence. Vous avez encore deux options. Tout ceci est une méthode, que vous appelez quelque part. Vous n'avez pas besoin de créer les images à l'intérieur de celle-ci : cela réduit la réutilisabilité de la méthode à zéro.
Pour que votre code fonctionne. Changez les méthodes head ( 1. ) à
- (UIImage *)maskImageMyImages {
Ensuite, changez le nom de la variable dans 2. à
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
La méthode renverra vos images masquées, vous devrez donc appeler cette méthode à un endroit quelconque. Pouvez-vous nous montrer le code où vous appelez votre méthode ?
28 votes
Je suis la personne qui a écrit le tutoriel original. L'image du masque est juste une simple image en niveaux de gris que j'ai créée dans Photoshop. Rien de spécial à ce sujet. La zone noire devient la partie "transparente" du masque. Gardez à l'esprit que toute nuance de gris est interprétée comme un degré d'opacité. De cette manière, les masques peuvent également être des dégradés, ce qui est utile pour créer des bordures plus douces autour d'un masque.
0 votes
Ça doit être de la même taille, non ?
0 votes
Code hyper-élégant, merci. juste un lien utile si quelqu'un a besoin de recadrer une image avant de la masquer... stackoverflow.com/questions/17712797/
0 votes
Une idée sur ce stackoverflow.com/questions/28122370/
1 votes
Je vous demande instamment de changer la réponse sélectionnée pour celle qui a presque 3 fois plus de votes positifs. À mon avis, elle est meilleure à presque tous les égards.