CodeGym /Corsi /Python SELF IT /Disegniamo: testi, linee e filigrane

Disegniamo: testi, linee e filigrane

Python SELF IT
Livello 46 , Lezione 0
Disponibile

1. Aggiungere testo all'immagine

Per aggiungere del testo all'immagine con Pillow, utilizziamo il modulo ImageDraw, che fornisce il metodo text() per visualizzare il testo nelle coordinate specificate.

Aggiunta semplice di testo

                
from PIL import ImageDraw, ImageFont

# Creiamo un oggetto per disegnare
draw = ImageDraw.Draw(image)

# Aggiungiamo del testo all'immagine
text = "Esempio di testo"
draw.text((50, 50), text, fill="white")

# Salvataggio dell'immagine con il testo
image.save("text_example.jpg")
                
            

In questo esempio, il testo "Esempio di testo" viene aggiunto alle coordinate (50, 50). Il parametro fill specifica il colore del testo, che può essere definito come stringa ("white", "black") o in formato RGB ((255, 255, 255)).

Impostazione del font del testo

Di default, Pillow utilizza un font standard. Per scegliere un altro font e definire la sua dimensione, si utilizza ImageFont.truetype(). Assicurati che il file del font sia disponibile nel tuo sistema.

                
# Caricamento del font
font = ImageFont.truetype("arial.ttf", 36)

# Aggiunta del testo con un font personalizzato
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
                
            

Qui utilizziamo il font arial.ttf con una dimensione di 36 pixel. Se il font richiesto non è disponibile, puoi scaricarlo e specificarne il percorso.

2. Aggiunta di filigrane

Una filigrana è un testo o un'immagine semitrasparente aggiunta a una foto per proteggerla dalla copia. Può essere utilizzata per aggiungere loghi o informazioni sull'autore. Con Pillow è possibile creare una semplice filigrana testuale.

Filigrana testuale

                
# Creiamo un oggetto per disegnare
draw = ImageDraw.Draw(image)

# Testo e font per la filigrana
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)

# Calcoliamo le coordinate per posizionare la filigrana
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10

# Aggiunta della filigrana in basso a destra
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
                
            

In questo esempio, la filigrana testuale viene aggiunta nell'angolo in basso a destra dell'immagine. Calcoliamo x e y in modo che la filigrana sia leggermente spostata dal bordo dell'immagine.

3. Aggiunta di elementi grafici

Oltre al testo, Pillow permette di disegnare elementi grafici di base, come linee, rettangoli, cerchi ed ellissi. Questo è utile per creare bordi, evidenziare aree e aggiungere figure geometriche.

Disegnare linee

Per disegnare linee, si utilizza il metodo line(), che accetta le coordinate dell'inizio e della fine della linea.

                
# Disegniamo una linea dall'angolo in alto a sinistra a quello in basso a destra
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
                
            

Questo codice disegna una linea rossa che passa diagonalmente dall'angolo in alto a sinistra a quello in basso a destra dell'immagine.

Disegnare rettangoli

Un rettangolo viene disegnato con il metodo rectangle(), che accetta le coordinate degli angoli in alto a sinistra e in basso a destra.

                
# Disegniamo un rettangolo
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
                
            

Qui viene creato un rettangolo con un contorno blu e una larghezza della linea di 3 pixel. È possibile utilizzare anche il parametro fill per riempire il rettangolo con un colore.

Disegnare cerchi ed ellissi

Il metodo ellipse() permette di disegnare cerchi ed ellissi. Per disegnare un cerchio, specifica dimensioni uguali per larghezza e altezza.

                
# Disegniamo un cerchio
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
                
            

In questo esempio, viene creato un cerchio con il centro nel punto (200, 200). Se specifichi dimensioni diverse per larghezza e altezza, otterrai un'ellisse.

Disegnare poligoni

Per disegnare poligoni, utilizza il metodo polygon(), che accetta le coordinate dei vertici della figura.

                
# Disegniamo un triangolo
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
                
            

Questo codice disegna un triangolo con un riempimento arancione e un contorno viola. Puoi creare una figura di qualsiasi forma, fornendo le coordinate dei suoi vertici.

4. Esempi

Esempio di creazione di una composizione con testo e grafica

Combiniamo tutto quanto descritto sopra e creiamo un'immagine con testo, filigrana ed elementi grafici.

                
from PIL import Image, ImageDraw, ImageFont

# Caricamento dell'immagine
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)

# Aggiunta del testo
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Demo Text", font=font, fill="yellow")

# Aggiunta della filigrana in basso a destra
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))

# Disegno di linea, rettangolo e cerchio
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)

# Salvataggio del risultato
image.save("final_composition_example.jpg")
                
            

Questo esempio crea un'immagine con testo, filigrana e alcuni elementi grafici (linea, rettangolo e cerchio). Composizioni di questo tipo possono essere utilizzate per presentazioni, blog e creazioni di immagini professionali.

Applicazioni pratiche

  • Marchiatura e protezione delle immagini: Le filigrane aiutano a proteggere le immagini dall'uso non autorizzato, mentre il testo permette di aggiungere informazioni sull'autore o sull'azienda.
  • Preparazione delle immagini per i social media: L'aggiunta di testo e grafica consente di preparare immagini per la pubblicazione, aggiungendo informazioni extra.
  • Infografica e visualizzazione dei dati: L'uso di elementi grafici, come linee e figure, permette di creare semplici grafici e diagrammi, rendendo Pillow utile per la creazione di infografiche.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION