Come disegnare forme su un'immagine con Pillow?
Oct 28, 2025
Lasciate un messaggio
Ehilà! Come fornitore di cuscini, non mi occupo solo della vendita di cuscini di prima qualitàCuscino da letto imbottito in fibra cava per hotel, morbido e morbido al 100% in poliestere,Cuscino in fibra di poliestere 100% di alta qualità per hotel, ECuscino in piuma d'oca bianca di alta qualità per hotel. Ho anche un po' di talento per l'elaborazione delle immagini. Oggi condividerò con te come disegnare forme su un'immagine utilizzando Pillow, una libreria Python super pratica.
Cos'è Pillow?
Prima di tutto, parliamo di cos'è Pillow. Pillow è un fork della Python Imaging Library (PIL). È facile da usare e fornisce numerose funzionalità per aprire, manipolare e salvare diversi formati di file immagine. Che tu sia un hobbista che cerca di aggiungere alcuni effetti interessanti alle foto delle tue vacanze o un designer professionista che lavora a un progetto, Pillow può essere il tuo migliore amico.
Installazione del cuscino
Prima di iniziare a disegnare forme, dobbiamo installare Pillow. Se stai usando pip (che è il modo più comune per installare i pacchetti Python), apri semplicemente il prompt dei comandi o il terminale e digita:
cuscino di installazione pip
Questo è tutto! In pochissimo tempo avrai il cuscino pronto all'uso.
Disegnare forme base
Cominciamo dalle basi. Disegneremo alcune forme semplici su un'immagine. Per prima cosa dobbiamo importare i moduli necessari e aprire un'immagine.
da PIL import Image, ImageDraw # Apri un'immagine image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image)
Nel codice sopra, importiamo prima il fileImmagineEImageDrawclassi dalla libreria Pillow. Quindi apriamo un file immagine (dovresti sostituire'la tua_immagine.jpg'con il percorso effettivo della tua immagine). ILImageDraw.Draw()la funzione crea un oggetto che possiamo usare per disegnare sull'immagine.


Disegnare una linea
Disegnare una linea è semplicissimo. Devi solo specificare i punti iniziale e finale della linea, insieme al colore e alla larghezza.
# Disegna una linea draw.line((100, 100, 200, 200), fill='red', width=2)
In questo esempio, la linea inizia nel punto(100, 100)e termina alle(200, 200). La linea è colorata di rosso e ha una larghezza di 2 pixel.
Disegnare un rettangolo
Successivamente, disegniamo un rettangolo. È necessario specificare gli angoli superiore sinistro e inferiore destro del rettangolo.
# Disegna un rettangolo draw.rectangle((300, 300, 400, 400), contour='blue', width=2)
Qui, il rettangolo ha il suo angolo superiore sinistro a(300, 300)e il suo angolo in basso a destra in(400, 400). Il contorno del rettangolo è blu e ha una larghezza di 2 pixel.
Disegnare un'ellisse
Anche disegnare un'ellisse è semplice. Si specifica il riquadro di delimitazione dell'ellisse (il rettangolo che la racchiuderebbe).
# Disegna un'ellisse draw.ellipse((500, 500, 600, 600), fill='green')
In questo caso, l'ellisse è riempita di colore verde ed è delimitata dal rettangolo con l'angolo in alto a sinistra(500, 500)e in basso a destra(600, 600).
Disegnare con maggiore controllo
A volte potresti voler avere un maggiore controllo sull'aspetto delle tue forme. Ad esempio, potresti voler disegnare una forma con un riempimento sfumato o un contorno tratteggiato.
Riempimento sfumato
Per creare un riempimento sfumato, possiamo utilizzare un ciclo per disegnare più linee con colori diversi. Ecco un esempio di creazione di un riempimento sfumato verticale per un rettangolo:
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Disegna un rettangolo con riempimento sfumato verticale start_color = (255, 0, 0) # Rosso end_color = (0, 0, 255) # Blu x1, y1, x2, y2 = 100, 100, 200, 200 altezza = y2 - y1 per y nell'intervallo(y1, y2): r = int(start_color[0] + (end_color[0] - start_color[0]) * (y - y1) / altezza) g = int(start_color[1] + (end_color[1] - start_color[1]) * (y - y1) / altezza) b = int(start_color[2] + (end_color[2] - start_color[2]) * (y - y1) / altezza) draw.line((x1, y, x2, y), fill=(r, g, b))
In questo codice definiamo innanzitutto i colori iniziale e finale del gradiente. Quindi eseguiamo il ciclo di ciascuna linea orizzontale all'interno del rettangolo e calcoliamo il colore di quella linea in base alla sua posizione.
Contorno tratteggiato
Disegnare un contorno tratteggiato può aggiungere un aspetto unico alle tue forme. Possiamo raggiungere questo obiettivo disegnando una serie di brevi linee con degli spazi intermedi.
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Disegna un rettangolo con contorno tratteggiato x1, y1, x2, y2 = 300, 300, 400, 400 dash_length = 5 gap_length = 3 for x in range(x1, x2, dash_length + gap_length): draw.line((x, y1,x+ dash_length, y1), fill='giallo', larghezza=2) draw.line((x, y2, x + dash_length, y2), fill='giallo', larghezza=2) for y in range(y1, y2, dash_length + gap_length): draw.line((x1, y, x1, y + dash_length), fill='giallo', larghezza=2) draw.line((x2, y, x2, y + trattino_lunghezza), riempimento='giallo', larghezza=2)
In questo esempio definiamo la lunghezza dei trattini e gli spazi tra loro. Quindi passiamo attraverso i lati del rettangolo e disegniamo le linee tratteggiate.
Salvataggio dell'immagine modificata
Una volta che abbiamo finito di disegnare forme sull'immagine, dobbiamo salvarla. È semplice come:
immagine.save('immagine_modificata.jpg')
Basta sostituire'immagine_modificata.jpg'con il nome che vuoi dare alla tua nuova immagine.
Disegno avanzato di forme
Abbiamo trattato le nozioni di base, ma Pillow consente il disegno di forme molto più avanzato. Ad esempio, puoi disegnare poligoni con più lati.
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Disegna un poligono punti = [(100, 100), (200, 150), (150, 250), (50, 200)] draw.polygon(points, fill='viola')
In questo codice definiamo un elenco di punti che compongono i vertici del poligono. Quindi usiamo ilpoligono()metodo per disegnare il poligono e riempirlo con il colore viola.
Conclusione
Disegnare forme su un'immagine con Pillow è facile e divertente. Che tu stia aggiungendo semplici linee e rettangoli o creando poligoni complessi con riempimenti sfumati, Pillow ti dà il potere di trasformare le tue immagini in modi sorprendenti.
Se cerchi cuscini di alta qualità, non dimenticare di dare un'occhiata ai nostri prodotti comeCuscino da letto imbottito in fibra cava per hotel, morbido e morbido al 100% in poliestere,Cuscino in fibra di poliestere 100% di alta qualità per hotel, ECuscino in piuma d'oca bianca di alta qualità per hotel. Siamo sempre alla ricerca di nuovi partner e clienti. Se sei interessato ad acquistare i nostri cuscini in grandi quantità, non esitare a contattarci per una discussione sull'approvvigionamento.
Riferimenti
- Documentazione ufficiale del cuscino
- Documentazione ufficiale di Python
