
Il modulo immagine della libreria di elaborazione delle immagini Pillow (PIL) fornisce il metodo resize() per ridimensionare le immagini.
Image.resize(size, resample=0)
Restituisce una copia ridotta di questa immagine.
Modulo immagine: documentazione Cuscino (PIL Fork) 4.0.0
In questo articolo vengono descritti i seguenti contenuti.
- Vieni a usare Image.resize()
- Codice di esempio per il ridimensionamento batch
- Ridimensiona solo i file con ulteriori specifiche
- Ridimensiona tutti i file di immagine supportati da Pillow
Vedere il seguente articolo per l’installazione e l’utilizzo di base di Pillow (PIL).
Usa crop() per ritagliare una parte dell’immagine.
Vieni a usare Image.resize()
Passa una tupla di (larghezza, altezza) alla dimensione dell’argomento.
Passa il filtro utilizzato per il ricampionamento all’argomento resample. Ci sono i seguenti 6 tipi. Se omesso, viene utilizzato automaticamente NEAREST.
Filtri
– PIÙ VICINO
– BOX
– BILINEARE
– HAMMING
– BICUBIC
– LANCZOS
Concepts — Pillow (PIL Fork) 4.0.0 documentazione
from PIL import Image
img = Image.open('data/src/lena_square.png')
img_resize = img.resize((256, 256))
img_resize.save('data/dst/lena_pillow_resize_nearest.jpg')
img_resize_lanczos = img.resize((256, 256), Image.LANCZOS)
img_resize_lanczos.save('data/dst/lena_pillow_resize_lanczos.jpg')
BICUBIC e LANCZOS impiegano più tempo per l’elaborazione rispetto a VICINO, ma la qualità è migliore.
L’immagine a sinistra viene ridotta dal filtro NEAREST e l’immagine a destra viene ridotta dal filtro LANCZOS.


Nell’esempio sopra, la dimensione dell’immagine è fissata come (256, 256). Per specificarlo in base alle dimensioni dell’immagine originale, procedere come segue.
img_resize = img.resize((img.width // 2, img.height // 2))
img_resize_lanczos.save('data/dst/lena_pillow_resize_half.jpg')
Poiché la dimensione deve essere specificata come numero intero, viene utilizzato //.
Codice di esempio per il ridimensionamento batch
Per il ridimensionamento batch, ottenere la stringa di percorso dei file nella cartella di destinazione (directory) con glob(), ridimensionarli con resize() e salvarli con il nuovo nome file con save().
Ridimensiona solo i file con ulteriori specifiche
Il codice di esempio per estrarre solo i file con estensione jpg è il seguente:
import os
import glob
from PIL import Image
dst_dir = 'data/temp/images_half'
os.makedirs(dst_dir, exist_ok=True)
files = glob.glob('./data/temp/images/*.jpg')
for f in files:
img = Image.open(f)
img_resize = img.resize((img.width // 2, img.height // 2))
root, ext = os.path.splitext(f)
basename = os.path.basename(root)
img_resize.save(os.path.join(dst_dir, basename + '_half' + ext))
Se vuoi ottenere file con più estratto, puoi selezionarli dopo aver i percorsi di tutti i file con glob().
files = glob.glob('./data/temp/images/*')
for f in files:
root, ext = os.path.splitext(f)
if ext in ['.jpg', '.png']:
img = Image.open(f)
img_resize = img.resize((img.width // 2, img.height // 2))
basename = os.path.basename(root)
img_resize.save(os.path.join(dst_dir, basename + '_half' + ext))
Ridimensiona tutti i file di immagine supportati da Pillow
Se vuoi ridurre tutti i file di immagine supportati da Pillow invece di estrarli per estensione, usa try … eccetto … per gestire le eccezioni. È più facile che specificare in modo esplicito più estensione.
files = glob.glob('./data/temp/images/*')
for f in files:
try:
img = Image.open(f)
img_resize = img.resize((img.width // 2, img.height // 2))
root, ext = os.path.splitext(f)
basename = os.path.basename(root)
img_resize.save(os.path.join(dst_dir, basename + '_half' + ext))
except OSError as e:
pass