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.
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.
# 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
.
# 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
# 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
# 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.
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
- Creación de collages: El método
paste()
permite añadir varias imágenes en un lienzo, creando collages y mosaicos. - 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. - 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 |
GO TO FULL VERSION