2009-07-10 7 views
2

J'ai un UIImage (généré par un dessin utilisateur) qui a un fond blanc. Je voudrais rendre les portions blanches de cette image transparentes. Je voudrais également enregistrer cela dans un fichier PNG.Comment masquer un UIImage pour que le blanc devienne transparent sur iphone?

J'ai regardé autour de moi sur des forums mais je n'arrive pas à comprendre comment masquer l'image correctement. Est-ce que quelqu'un a déjà essayé cela?

Merci.

+1

Dupliquer de: http://stackoverflow.com/questions/633722/how-to-make-one-color-transparent-on-a-uiimage –

Répondre

0

Vous pourriez essayer de rendre le UIImage de départ complètement transparent et ensuite avoir un autre UIImageView complètement blanc.

0

Vous allez devoir obtenir les données brutes, rechercher des pixels blancs, modifier l'alpha de ces pixels et les enregistrer dans un nouvel objet NSData, puis les convertir en PNG.

Ce n'est pas difficile, mais je ne dirais pas que c'est trivial.

3

Essayez quelque chose comme ça ...

CGImageRef myMaskedImage = [myImage CGImage]; 
const float whiteMask[6] = { 255,255,255, 255,255,255 }; 
CGImageRef myColorMaskedImage = CGImageCreateWithMaskingColors(image, whiteMask); 

CGDataProviderRef provider; 
CGImageRef myPngImage = CGImageCreateWithPNGDataProvider(provider, NULL, true, kCGRenderingIntentDefault); 

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt: 72], kCGImagePropertyDPIHeight, [NSNumber numberWithInt: 72], kCGImagePropertyDPIWidth, nil]; 
CGImageDestinationRef destRef = CGImageDestinationCreateWithURL ((CFURLRef)outPath, (CFStringRef)@"image.png" , 1, NULL); 
CGImageDestinationAddImage(destRef, myPngImage, (CFDictionaryRef)options); 
CGImageDestinationFinalize(destRef); 
CGRelease(destRef); 

CGImageRelease(myColorMaskedImage); 
CGImageRelease(myPngImage); 

du poussif assez long Quartz2d Programming Guide et this mailing list message.

Questions connexes