Home » Píldoras de código » Borrar un color en un UIImage y hacerlo canal alfa
Píldoras UIImage

Borrar un color en un UIImage y hacerlo canal alfa

Función que recoge una imagen de tipo UIImage y la procesa a través de la librería Core Graphics para eliminar un color de una máscara predefinida (en la función el negro) y convertir dicho color en un alfa para la imagen resultante.

De esta forma, una imagen con color de fondo en PNG u otro formato, puede ser procesada como si fuera un modo instant alpha que elimina un color y obtiene la imagen con su canal transparente.

Tenemos una función convertirUIImageAlfa a la que enviamos un parámetro imagen de tipo UIImage. La función será falible por lo que devolverá otra imagen pero como opcional, de forma que si hay cualquier error a la hora de aplicar la máscara devolverá nil.

Creamos una matriz de 6 posiciones colorMasking que corresponde con los rangos de colores RGB que van a ser eliminados a través de dicha máscara (el negro en este caso), por lo que si queremos borrar otro color solo tenemos que cambiar estos parámetros. Luego extraemos la imagen CGImage de la propiedad correspondiente de nuestra UIImage ya que será está con la que trabajaremos.

El truco está en que creamos una imagen que es solo canal alfa a partir de los datos de nuestra imagen origen, para luego aplicarle una máscara de color que sustituya el color negro (la matriz colorMasking) por los píxeles correspondientes de nuestra imagen completamente alfa que hemos creado por programación. De esta forma, se sustituye el color negro por información transparente.

La llamada a CGImageCreateWithMaskingColor puede dar un resultado nil por lo que hacemos un enlace opcional que devuelve este resultado en caso que la imagen no pueda ser convertida por algún motivo.

Con este práctico ejemplo, podemos coger cualquier imagen del sistema y hacerla trasparente a partir de un color concreto de una manera fácil y rápida. Probad, practicad y Good Apple Coding.

Probado en Xcode 7 / Swift 2.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Pildoras de Código UIActivityViewController

Píldoras de código, UIActivityViewController en iOS 9

Te enseñamos, con una pequeña píldora de código, cómo se comparte contenido desde nuestra app hacia redes sociales y demás. Todo con un ejemplo claro.