Cómo hacer que un color sea transparente en UIImage

Quiero cambiar un color en UIimage a transparente. Utilizo el código siguiente para cambiar el color negro a transparente.

-(void)changeColorToTransparent: (UIImage *)image{ CGImageRef rawImageRef = image.CGImage; const float colorMasking[6] = { 0, 0, 0, 0, 0, 0 }; UIGraphicsBeginImageContext(image.size); CGImageRef maskedImageRef = CGImageCreateWithMaskingColors(rawImageRef, colorMasking); { CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height); CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); } CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef); UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); CGImageRelease(maskedImageRef); UIGraphicsEndImageContext(); } 

Está funcionando bien … Pero quiero dibujar un punto en la image al elegir el selector de color de la forma del color y luego quiero hacer que ese punto sea transparente … No sé cómo dar valores en el enmascaramiento del color en la línea inferior

 const float colorMasking[6] = { 0, 0, 0, 0, 0, 0 }; 

¿Puede alguien ayudarme a hacer un color transparente?

De los documentos :

componentes

Una matriz de componentes de color que especifica un color o range de colors para enmascarar la image. La matriz debe contener valores 2N {min 1 , max 1 , … min [N], max [N]} donde N es el número de componentes en el espacio de color de la image. Cada valor en los componentes debe ser un valor de muestra de image válido. Si la image tiene componentes de píxeles integers, entonces cada valor debe estar en el range [0 .. 2 ** bitsPerComponent – 1] (donde bitsPerComponent es el número de bits / componente de la image). Si la image tiene componentes de píxeles en coma flotante, cada valor puede ser cualquier número de coma flotante que sea un componente de color válido.

En inglés simple, si tiene una image RGB típica (RGB es el nombre del espacio de color), entonces tiene 3 componentes: R (rojo), G (verde) y B (azul), cada uno de los cuales va de 0 a 255 (2 ** 8 – 1, suponiendo 8 bits por componente).

Por lo tanto, colorMasking define los ranges de valores para cada componente que desea hacer transparentes, es decir, el primer elemento en colorMasking es el componente rojo mínimo, el segundo es el componente rojo máximo, el tercero es el componente verde mínimo, Etcétera.

La image de resultado será la image de input con algunos píxeles transparentes. ¿Qué píxeles? Aquellos cuyos valores RGB se encuentran entre los ranges que estableció en colorMasking .

En su ejemplo, la matriz es todo ceros porque quiere hacer que el negro sea transparente (y recuerde, el color negro en RGB es (0,0,0)).

Prueba esto-

 -(UIImage *)changeWhiteColorTransparent: (UIImage *)image { CGImageRef rawImageRef=image.CGImage; const float colorMasking[6] = {222, 255, 222, 255, 222, 255}; UIGraphicsBeginImageContext(image.size); CGImageRef maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking); { //if in iPhone CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height); CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); } CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef); UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); CGImageRelease(maskedImageRef); UIGraphicsEndImageContext(); return result; }