1. Adicionando texto em uma imagem
Pra adicionar texto em uma imagem no Pillow, usa-se o módulo ImageDraw, que fornece o método text() pra exibir texto em coordenadas específicas.
Adicionando texto de forma simples
from PIL import ImageDraw, ImageFont
# Criar objeto de desenho
draw = ImageDraw.Draw(image)
# Adicionar texto na imagem
text = "Texto de exemplo"
draw.text((50, 50), text, fill="white")
# Salvar imagem com texto
image.save("text_example.jpg")
Nesse exemplo, o texto "Texto de exemplo" é adicionado nas coordenadas (50, 50). O parâmetro fill define a cor do texto, que pode ser especificada como uma string ("white", "black") ou no formato RGB ((255, 255, 255)).
Customizando a fonte do texto
Por padrão, o Pillow usa uma fonte padrão. Pra escolher outra fonte e definir o tamanho dela, use ImageFont.truetype(). Certifique-se de que o arquivo de fonte esteja disponível no seu sistema.
# Carregar fonte
font = ImageFont.truetype("arial.ttf", 36)
# Adicionar texto com fonte personalizada
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
Aqui usamos a fonte arial.ttf com tamanho de 36 pixels. Se a fonte necessária não estiver disponível, você pode baixá-la e especificar o caminho pro arquivo.
2. Adicionando uma marca d'água
Uma marca d'água é um texto ou imagem semitransparente que é sobreposto em uma foto para proteger contra cópias. É útil pra adicionar logotipos ou informações do autor. Com o Pillow, dá pra criar uma marca d'água de texto simples.
Marca d'água de texto
# Criar objeto de desenho
draw = ImageDraw.Draw(image)
# Texto e fonte pra marca d'água
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)
# Definir coordenadas pra marca d'água
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10
# Adicionar marca d'água no canto inferior direito
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
Nesse exemplo, a marca d'água de texto é adicionada no canto inferior direito da imagem. Calculamos x e y pra posicionar ligeiramente afastado da borda da imagem.
3. Adicionando elementos gráficos
Além de texto, o Pillow permite desenhar elementos gráficos básicos como linhas, retângulos, círculos e elipses. Isso é útil pra criar bordas, destacar áreas e adicionar formas geométricas.
Desenhando linhas
Use o método line() pra desenhar linhas, que recebe coordenadas do início e fim da linha.
# Desenhar uma linha do canto superior esquerdo ao inferior direito
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
Esse código desenha uma linha vermelha diagonal do canto superior esquerdo ao inferior direito da imagem.
Desenhando retângulos
Um retângulo pode ser desenhado usando o método rectangle(), que recebe coordenadas dos cantos superior esquerdo e inferior direito.
# Desenhar retângulo
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
Aqui, um retângulo é criado com contorno azul e espessura de linha de 3 pixels. Você também pode usar o parâmetro fill pra preencher o retângulo com uma cor.
Desenhando círculos e elipses
O método ellipse() permite desenhar círculos e elipses. Pra desenhar um círculo, defina tamanhos iguais pra largura e altura.
# Desenhar círculo
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
Nesse exemplo, é criado um círculo com centro no ponto (200, 200). Se definir tamanhos diferentes pra largura e altura, você obtém uma elipse.
Desenhando polígonos
Use o método polygon() pra desenhar polígonos, que recebe coordenadas dos vértices da forma.
# Desenhar triângulo
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
Esse código desenha um triângulo com preenchimento laranja e contorno roxo. Você pode criar uma forma de qualquer tamanho, passando as coordenadas dos vértices.
4. Exemplos
Exemplo de criação de composição com texto e gráficos
Vamos combinar tudo mencionado acima e criar uma imagem com texto, marca d'água e elementos gráficos.
from PIL import Image, ImageDraw, ImageFont
# Carregar imagem
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# Adicionar texto
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Texto Demo", font=font, fill="yellow")
# Adicionar marca d'água no canto inferior direito
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))
# Desenhar linha, retângulo e círculo
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
# Salvar resultado
image.save("final_composition_example.jpg")
Nesse exemplo, criamos uma imagem com texto, marca d'água e vários elementos gráficos (linha, retângulo e círculo). Composições assim podem ser usadas pra apresentações, blogs e até designs profissionais.
Aplicações práticas
- Marcar e proteger imagens: Marcas d'água ajudam a proteger imagens contra uso não autorizado, enquanto textos podem adicionar informações do autor ou da empresa.
- Preparação de imagens pra redes sociais: Adicionar texto e gráficos permite preparar imagens pra publicação com informações extras.
- Infográficos e visualização de dados: O uso de elementos gráficos como linhas e formas permite criar gráficos simples e diagramas, tornando o Pillow útil pra criar infográficos.
GO TO FULL VERSION