CodeGym /Cursos /Python SELF ES /Fusión y combinación de imágenes

Fusión y combinación de imágenes

Python SELF ES
Nivel 45 , Lección 3
Disponible

1. Preparación

Carga de imágenes para combinar

Antes de empezar a trabajar con varias imágenes, es necesario cargarlas. Pillow permite trabajar con la mayoría de formatos de imágenes populares, como JPEG, PNG, BMP y GIF.

Python

from PIL import Image

# Carga de imágenes
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")

Aquí cargamos dos imágenes: una de fondo y otra para superponer. Es importante recordar que para algunos métodos ambas imágenes deben tener el mismo tamaño.

2. Superposición de imágenes

Método paste()

El método paste() permite insertar una imagen sobre otra en coordenadas especificadas. Este método es útil si necesitas superponer una imagen sobre otra o crear un efecto de collage.

Python

# Cambiar el tamaño del primer plano para que coincida con el tamaño del fondo
foreground = foreground.resize(background.size)

# Superposición de la imagen sobre el fondo
background.paste(foreground, (50, 50))  # Insertamos foreground en las coordenadas (50, 50)

# Guardar el resultado
background.save("pasted_image.jpg")

Aquí la imagen foreground se inserta en background con el punto inicial de inserción en (50, 50). Si el primer plano excede los límites del fondo, será recortado parcialmente.

Uso de máscara con paste()

El método paste() también admite máscaras, que permiten superponer una imagen parcialmente, conservando sus áreas transparentes. La máscara debe estar en modo L (escala de grises) o RGBA.

Python

# Crear una máscara
mask = Image.open("mask.png").convert("L")  # Convertimos la máscara a escala de grises

# Insertamos la imagen con la máscara
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")

La máscara mask.png define qué partes de la imagen foreground serán visibles, y permite superponer una imagen sobre otra cuidadosamente.

3. Mezcla de imágenes

Método blend()

El método blend() permite mezclar dos imágenes con una transparencia especificada. Este método crea un nuevo objeto de imagen que representa la mezcla de las dos imágenes originales. Para usar blend(), ambas imágenes deben tener el mismo tamaño.

Mezcla sencilla de imágenes

Python

# Cambiar el tamaño de las imágenes para que sean del mismo tamaño
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))

# Mezcla de imágenes con un coeficiente de transparencia
blended_image = Image.blend(background, foreground, alpha=0.5)

# Guardar el resultado
blended_image.save("blended_image.jpg")

El parámetro alpha define el grado de transparencia de la imagen foreground. Si alpha = 0.5, las imágenes se mezclan por igual. Un valor de alpha = 0.0 hace que la imagen foreground sea completamente transparente (solo se verá el fondo), mientras que alpha = 1.0 hace que la imagen de fondo sea completamente transparente (solo se verá el primer plano).

4. Composición de imágenes con máscara

Método composite()

El método composite() permite combinar dos imágenes en función de una máscara, que define qué partes de qué imagen serán visibles. Este método es muy útil para crear composiciones complejas y superponer con precisión una imagen sobre otra.

Ejemplo: Uso de composite() para combinar imágenes

Python

# Asegurarnos de que ambas imágenes y la máscara tengan el mismo tamaño
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))

# Crear la composición con máscara
composited_image = Image.composite(foreground, background, mask)

# Guardar la imagen
composited_image.save("composited_image.jpg")

La máscara define qué partes de foreground y background serán visibles en la imagen final. Las áreas blancas de la máscara hacen visible foreground, mientras que las áreas negras muestran background.

5. Ejemplos

Ejemplo de uso combinado de los métodos paste(), blend() y composite()

Ahora combinemos estos métodos para crear una composición más compleja. Supongamos que tenemos un fondo, una imagen con semi-transparencia y una máscara.

Python

from PIL import Image

# Carga de imágenes
background = Image.open("background.jpg").resize((500, 500))
foreground = Image.open("foreground.png").resize((500, 500))
mask = Image.open("mask.png").convert("L").resize((500, 500))

# 1. Mezclamos el fondo y el primer plano con semi-transparencia
blended_image = Image.blend(background, foreground, alpha=0.3)

# 2. Superposición con máscara en la imagen final
final_composite = Image.composite(foreground, blended_image, mask)

# Guardar el resultado final
final_composite.save("final_composition.jpg")

Este ejemplo muestra cómo aplicar secuencialmente blend() y composite() para crear composiciones multicapa.

Aplicaciones prácticas de los métodos de combinación de imágenes

  1. Creación de collages: El método paste() permite añadir varias imágenes en un lienzo, creando collages y mosaicos.
  2. Efectos de superposición y transparencia: El método blend() permite crear transiciones suaves entre imágenes, útil para edición de fotos y creación de efectos.
  3. Composiciones con máscaras: El método composite() permite controlar exactamente qué partes de qué imagen serán visibles, creando composiciones complejas con máscaras.

Comparación de métodos

Método Descripción Aplicación
paste() Superposición de una imagen sobre otra Collages, posicionamiento de una imagen sobre otra
blend() Mezcla de dos imágenes con una transparencia especificada Transiciones suaves y efectos de superposición
composite() Combinación de dos imágenes en función de una máscara Composiciones complejas y superposición precisa
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION