1. Preparação
Carregando imagens para combinação
Antes de trabalhar com várias imagens, elas precisam ser carregadas. O Pillow permite trabalhar com a maioria dos formatos populares, como JPEG, PNG, BMP e GIF.
from PIL import Image
# Carregando imagens
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")
Aqui estamos carregando duas imagens: uma de fundo e outra para sobreposição. É importante lembrar que, para alguns métodos, ambas as imagens devem ter o mesmo tamanho.
2. Sobrepondo imagens
Método paste()
O método paste() permite inserir uma imagem sobre outra em coordenadas específicas. Esse método é útil se você quiser sobrepor uma imagem em outra ou criar um efeito de colagem.
# Redimensionar o plano de frente para corresponder ao tamanho do plano de fundo
foreground = foreground.resize(background.size)
# Sobrepor a imagem no plano de fundo
background.paste(foreground, (50, 50)) # Insira o foreground nas coordenadas (50, 50)
# Salvando o resultado
background.save("pasted_image.jpg")
Aqui a imagem foreground foi inserida sobre background com o ponto inicial de inserção em (50, 50). Se o plano frontal exceder os limites do plano de fundo, ele será cortado parcialmente.
Uso de máscara com paste()
O método paste() também suporta máscaras, que permitem inserir uma imagem parcialmente, mantendo suas áreas transparentes. A máscara deve estar no modo L (tons de cinza) ou RGBA.
# Criando máscara
mask = Image.open("mask.png").convert("L") # Converte máscara para tons de cinza
# Inserindo a imagem com máscara
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")
A máscara mask.png define quais partes da imagem foreground serão visíveis, e permite sobrepor uma imagem a outra suavemente.
3. Mistura de imagens
Método blend()
O método blend() permite misturar duas imagens com uma opacidade definida. Esse método cria um novo objeto de imagem que é a mistura dos dois objetos de imagem originais. Para usar o blend(), ambas as imagens devem ser do mesmo tamanho.
Mistura simples de imagens
# Redimensionando imagens para o mesmo tamanho
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
# Mistura de imagens com fator de opacidade
blended_image = Image.blend(background, foreground, alpha=0.5)
# Salvando o resultado
blended_image.save("blended_image.jpg")
O parâmetro alpha define o grau de transparência da imagem foreground. Se alpha = 0.5, as imagens são misturadas uniformemente. Um valor de alpha = 0.0 torna a imagem foreground completamente transparente (apenas o fundo é visível), enquanto alpha = 1.0 faz a imagem de fundo completamente transparente (apenas o plano frontal é visível).
4. Composição de imagens com máscara
Método composite()
O método composite() permite combinar duas imagens com base em uma máscara, definindo quais partes de cada imagem serão visíveis. Esse método é muito útil para criar composições complexas e alinhar imagens com exatidão.
Exemplo: Usando composite() para combinar imagens
# Certifique-se de que ambas as imagens e a máscara têm o mesmo tamanho
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))
# Criando composição com máscara
composited_image = Image.composite(foreground, background, mask)
# Salvando imagem
composited_image.save("composited_image.jpg")
A máscara define quais partes de foreground e background serão visíveis na imagem final. Áreas brancas da máscara tornam o foreground visível, enquanto áreas pretas tornam visível o background.
5. Exemplos
Exemplo de uso combinado dos métodos paste(), blend() e composite()
Agora vamos combinar esses métodos para criar uma composição mais complexa. Suponha que temos um fundo, uma imagem semitransparente e uma máscara.
from PIL import Image
# Carregando imagens
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. Misturando fundo e plano de frente com semitransparência
blended_image = Image.blend(background, foreground, alpha=0.3)
# 2. Sobreposição com máscara na imagem final
final_composite = Image.composite(foreground, blended_image, mask)
# Salvando o resultado final
final_composite.save("final_composition.jpg")
Esse exemplo mostra como aplicar sequencialmente blend() e composite() para criar composições em camadas.
Aplicação prática dos métodos de combinação de imagens
- Criação de colagens: O método
paste()permite adicionar várias imagens em uma tela, criando colagens e mosaicos. - Efeitos de sobreposição e transparência: O método
blend()possibilita criar transições suaves entre imagens, útil para edição de fotos e efeitos. - Composições com máscaras: O método
composite()permite controlar exatamente quais partes de cada imagem serão visíveis, criando composições complexas com máscaras.
Comparação entre métodos
| Método | Descrição | Aplicação |
|---|---|---|
paste() |
Inserir uma imagem sobre outra | Colagens, posicionar uma imagem sobre outra |
blend() |
Mistura de duas imagens com opacidade definida | Transições suaves e efeitos de sobreposição |
composite() |
Combinação de duas imagens baseada em máscara | Composições complexas e sobreposição precisa |
GO TO FULL VERSION