Come posso eliminare la parte magenta di un UIImage e renderlo trasparente?Colore iOS a trasparente in UIImage
Ho esaminato numerose risposte e collegamenti su SO e niente funziona (ad esempio How to make one color transparent on a UIImage? risposta 1 rimuove tutto tranne il rosso, la risposta 2 a quanto pare non funziona a causa di Why is CGImageCreateWithMaskingColors() returning nil in this case?).
Aggiornamento:
Se uso CGImageCreateWithMaskingColors con l'UIImage ottengo un valore nullo. Se rimuovo il canale alfa (rappresento l'immagine come JPEG e la rileggo) CGImageCreateWithMaskingColors restituisce un'immagine dipinta con uno sfondo nero.
Update2, il codice:
Tornando nil:
const float colorMasking[6] = {222, 255, 222, 255, 222, 255};
CGImageRef imageRef = CGImageCreateWithMaskingColors(anchorWithMask.CGImage, colorMasking);
NSLog(@"image ref %@", imageRef);
// this is going to return a nil imgref.
UIImage *image = [UIImage imageWithCGImage:imageRef];
Tornando un'immagine con sfondo nero (che è normale poiché non c'è canale alfa):
UIImage *inputImage = [UIImage imageWithData:UIImageJPEGRepresentation(anchorWithMask, 1.0)];
const float colorMasking[6] = {222, 255, 222, 255, 222, 255};
CGImageRef imageRef = CGImageCreateWithMaskingColors(inputImage.CGImage, colorMasking);
NSLog(@"image ref %@", imageRef);
// imgref is NOT nil.
UIImage *image = [UIImage imageWithCGImage:imageRef];
Aggiornamento3:
Ho funzionato aggiungendo il canale alfa dopo il processo di mascheratura.
Pubblica il tuo codice. –
Aggiunto il codice. –