Création de masque avec CGImageMaskCreate est tout noir (iphone)
Je suis en train de créer une image de masque à partir d'un composite de deux images existantes.
J'ai d'abord commencer par la création du composite qui se compose d'une petite image qui est le masquage de l'image, et une image plus grande qui est la même taille que le fond:
UIImage * BaseTextureImage = [UIImage imageNamed:@"background.png"];
UIImage * MaskImage = [UIImage imageNamed:@"my_mask.jpg"];
UIImage * ShapesBase = [UIImage imageNamed:@"largerimage.jpg"];
UIImage * MaskImageFull;
CGSize finalSize = CGSizeMake(480.0, 320.0);
UIGraphicsBeginImageContext(finalSize);
[ShapesBase drawInRect:CGRectMake(0, 0, 480, 320)];
[MaskImage drawInRect:CGRectMake(150, 50, 250, 250)];
MaskImageFull = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Je peux sortie de cette UIImage (MaskImageFull) et il regarde à droite, c'est une pleine taille arrière-plan de la taille et c'est un fond blanc avec mon masque de l'objet dans le noir, dans le bon endroit sur l'écran.
Je puis passer le MaskImageFull UIImage par le biais de ce:
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);
UIImage* retImage= [UIImage imageWithCGImage:masked];
Le problème est que le retImage est tout noir. Si j'envoie un pré-faites UIImage dans le masque, il fonctionne très bien, c'est juste quand j'ai essayer de le faire à partir de plusieurs images qui se brise.
Je pensais que c'était une palette chose, mais n'arrivais pas à le résoudre. Toute aide est grandement appréciée!
OriginalL'auteur Patrick | 2009-03-11
Vous devez vous connecter pour publier un commentaire.
J'ai essayé la même chose avec CGImageCreateWithMask, et a obtenu le même résultat. La solution que j'ai trouvé est d'utiliser CGContextClipToMask à la place:
Qu'est-ce que thumbnailPoint.x exactement??! @catlan
désolé, je ne m'en souviens pas. l'échelle* regarde aussi bizarre, 9 ans plus tard. Je suppose que dans la plupart des cas, masque rect et l'image rect devrait être le même. S'il vous plaît essayez-la et laissez-nous savoir ce que vous trouvez,
OriginalL'auteur catlan
OriginalL'auteur Mohammed Afsul
L'image masquée DOIT être créé avec un canal alpha. Le canal Alpha ne peut pas être créé à partir du code.
OriginalL'auteur Wes Duff