
Pillow è una libreria di elaborazione delle immagini derivata da PIL (Python Image Library). Poiché PIL non è più in fase di sviluppo, Pillow è ora ampiamente utilizzato.
Pillow è la “forza PIL amichevole” di Alex Clark e Contributors. PIL è la Python Imaging Library di Fredrik Lundh e collaboratori.
Pillow — Pillow (PIL Fork) 4.2.1 documentazione
Se non è possibile eseguire l’elaborazione avanzata delle immagini (riconoscimento facciale, flusso ottico, ecc.) come OpenCV, è possibile eseguire semplici elaborazioni delle immagini come ridimensionamento (ridimensionamento), rotazione e taglio (ritaglio parziale).
Perché Pillow è più semplice e facile da capire di OpenCV, è meglio usarlo a secondo dello scopo.
In questo articolo vengono descritti i seguenti contenuti.
- Installa
- Utilizzo di base
- Caricamento, elaborazione, salvataggio delle immagini
- Disegno
- Altri esempi di lavorazione
Vedere il collegamento seguente per i singoli articoli che spiegano vari processi come il ridimensionamento e il taglio.
Installa
Il cuscino può essere installato da pip.
Cuscino e PIL non possono coesistere. Se hai installato entrambi, devi disinstallarli entrambi e reinstallarne solo uno.
Se non sai cosa è installato, puoi verificarlo come segue:
Disinstalla:
$ pip uninstall
Nota che se stai usando Python 3, devi usare pip3 invece di usare pip a seconda del tuo ambiente.
Vedere il seguente articolo per le operazioni di base di pip.
Utilizzo di base
Il documento ufficiale è di facile comprensione.
Caricamento, elaborazione, salvataggio delle immagini
Leggi il file immagine. Si noti che il nome del pacchetto da importare è PIL, non Pillow.
from PIL import Image, ImageFilter
im = Image.open('data/src/lenna_square.png')
Ottieni meta informazioni come formato, dimensione (larghezza, altezza), modalità, ecc. La dimensione è espressa da (larghezza, altezza).
print(im.format, im.size, im.mode)
# PNG (512, 512) RGB
Ottieni il valore minimo e il valore massimo di ogni colore di RGB.
print(im.getextrema())
# ((54, 255), (3, 248), (8, 225))
Ottieni il valore in pixel della coordinata specificata. L’origine delle coordinate (0, 0) è in alto a sinistra.
print(im.getpixel((256, 256)))
# (180, 65, 72)
Ad esempio, viene eseguita l’elaborazione della conversione della scala di grigi (convert(‘L’)), della rotazione di 90 gradi (rotate(90)) e della sfocatura gaussiana (filter()).
new_im = im.convert('L').rotate(90).filter(ImageFilter.GaussianBlur())
Visualizza le immagini con il software predefinito del sistema operativo.
Salva l’immagine.
new_im.save('data/dst/lenna_square_pillow.jpg', quality=95)
Quando si salva con save(), i parametri differiscono a seconda dell’estensione. Per i dettagli, vedere Formato file immagine . Nel caso di jpg, puoi specificare la qualità con il parametro quality. Il valore predefinito è 75 per un valore compreso tra 1 (il più basso) e 95 (il più alto).
L’immagine originale e l’immagine dopo l’elaborazione sono le seguenti.


Disegno
Puoi anche disegnare figura.
Usa il modulo ImageDraw . Vedere anche il seguente articolo per i dettagli.
Innanzitutto, crea un’immagine solida. Specificare la dimensione nel secondo argomento ei colori RGB nel terzo argomento.
from PIL import Image, ImageDraw, ImageFont
im = Image.new("RGB", (512, 512), (128, 128, 128))
Specificare l’oggetto Image come argomento e creare un oggetto Draw.
draw = ImageDraw.Draw(im)
Disegna una linea retta, un rettangolo e un’ellisse.
draw.line((0, im.height, im.width, 0), fill=(255, 0, 0), width=8)
draw.rectangle((100, 100, 200, 200), fill=(0, 255, 0))
draw.ellipse((250, 300, 450, 400), fill=(0, 0, 255))
Disegna il testo con il carattere specificato.
font = ImageFont.truetype('/Library/Fonts/Arial Bold.ttf', 48)
draw.multiline_text((0, 0), 'Pillow sample', fill=(0, 0, 0), font=font)
Il risultato è il seguente:

In questo esempio viene generata prima un’immagine solida, ma è anche possibile leggere un file immagine e disegnarvi sopra figure e testo.
Altri esempi di lavorazione
Ecco alcuni esempi di elaborazione delle immagini utilizzando Pillow (PIL). Per dettagli e codice di esempio, fare riferimento agli articoli collegati.
Incolla un’altra immagine nell’immagine
Incolla un’altra immagine sull’immagine di sfondo.
Oltre ai rettangoli, è anche qualsiasi possibile ritagliare e incollare in forma, ad esempio un cerchio, utilizzando un’immagine maschera.

Componi due immagini
Componi due immagini della stessa dimensione.
Puoi comporre secondo un’immagine maschera. Un’immagine di gradazione può essere utilizzata come maschera per creare un’immagine che cambia gradualmente.

Concatena più immagini
Più immagini possono essere disposte verticalmente o orizzontalmente per creare un’immagine concatenata.

Crea un’immagine png trasparente
Crea un’immagine png trasparente con un canale alfa.
Questo può anche essere mascherato in qualsiasi forma.

Inversione negativa-positiva (invertire il valore dei pixel)
Viene generata un’immagine invertita negativa-positiva (immagine con valori di pixel invertiti).

Crea immagini in miniatura circolari o quadrate
Crea immagini in miniatura da immagini di grandi dimensioni.
Puoi ritagliare il centro, aggiungere margini per rendere di qualsiasi dimensione o circolare rendere. È anche possibile elaborare più immagini contemporaneamente.
![]()
![]()
![]()
Crea gif animate
Puoi creare immagini gif animate, jpg e png.

