Skip to content

Come usare Pillow (PIL: Python Imaging Library)

Python

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.

originaleelaborato

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:

cuscino_campione

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.

Cuscino Image.paste risultato maschera cerchio sfocatura

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.

Gradazione composita Cuscino Pitone

Concatena più immagini

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

cuscino in pitone concat piastrella ridimensionata

Crea un’immagine png trasparente

Crea un’immagine png trasparente con un canale alfa.

Questo può anche essere mascherato in qualsiasi forma.

Python cuscino putalfa cerchio

Inversione negativa-positiva (invertire il valore dei pixel)

Viene generata un’immagine invertita negativa-positiva (immagine con valori di pixel invertiti).

cuscino invertito lena

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.

Miniatura cuscino quadrato max
La miniatura del cuscino espandi il quadrato
Cerchio delle miniature del cuscino trasparente

Crea gif animate

Puoi creare immagini gif animate, jpg e png.

gif cuscino