iOS color a transparente en UIImage
Cómo puedo limpiar la parte magenta de un UIImage y hacerla transparente?
He revisado numerosas respuestas y enlaces en SO y nada funciona (por ejemplo, ¿Cómo hacer que un color sea transparente en un UIImage? respuesta 1 elimina todo menos el rojo, la respuesta 2 aparentemente no funciona debido a ¿Por qué CGImageCreateWithMaskingColors () devuelve nil en este caso?).
Actualizar
Si uso CGImageCreateWithMaskingColors con el UIImage obtengo un valor nulo. Si elimino el canal alfa (represento la imagen como JPEG y lo leo de nuevo) CGImageCreateWithMaskingColors devuelve una imagen pintada con un fondo negro.
Update2, el código:
Returning 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];
Volver una imagen con fondo negro (lo cual es normal ya que no hay canal 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];
Actualización3:
o hice funcionar agregando el canal alfa después del proceso de enmascaramiento.