
Le module Image de la bibliothèque de traitement d’images Pillow (PIL) fournit la méthode resize() pour redimensionner les images.
Image.resize(size, resample=0)
Renvoie une copie redimensionnée de cette image.
Module Image — Oreiller (Fourche PIL) 4.0.0 documentation
Cet article décrit le contenu suivant.
- Comment utiliser Image.resize()
- Exemple de code pour le redimensionnement par lots
- Redimensionner uniquement les fichiers avec des extensions spécifiques
- Redimensionner tous les fichiers image pris en charge par Pillow
Consultez l’article suivant pour l’installation et l’utilisation de base de Pillow (PIL).
Utilisez crop() pour recadrer une partie de l’image.
Comment utiliser Image.resize()
Passez un tuple de (largeur, hauteur) à la taille de l’argument.
Passez le filtre utilisé pour le rééchantillonnage à l’argument resample. Il existe les 6 types suivants. S’il est omis, NEAREST est utilisé par défaut.
Filtres
– NEAREST
– BOX
– BILINEAR
– HAMMING
– BICUBIC
– LANCZOS
Concepts — Documentation Pillow (PIL Fork) 4.0.0
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 et LANCZOS prennent plus de temps à traiter que NEAREST, mais la qualité est meilleure.
L’image de gauche est redimensionnée par le filtre NEAREST et l’image de droite est redimensionnée par le filtre LANCZOS.


Dans l’exemple ci-dessus, la taille de l’image est fixée à (256, 256). Pour le spécifier en fonction de la taille de l’image d’origine, procédez comme suit.
img_resize = img.resize((img.width // 2, img.height // 2))
img_resize_lanczos.save('data/dst/lena_pillow_resize_half.jpg')
Étant donné que la taille doit être spécifiée sous forme d’entier, // est utilisé.
Exemple de code pour le redimensionnement par lots
Pour le redimensionnement par lots, récupérez la chaîne de chemin des fichiers dans le dossier cible (répertoire) avec glob(), redimensionnez-les avec resize() et enregistrez-les avec le nouveau nom de fichier avec save().
Redimensionner uniquement les fichiers avec des extensions spécifiques
L’exemple de code pour extraire uniquement les fichiers avec l’extension jpg est le suivant :
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))
Si vous souhaitez obtenir des fichiers avec plusieurs extensions, vous pouvez les sélectionner après avoir extrait les chemins de tous les fichiers avec 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))
Redimensionner tous les fichiers image pris en charge par Pillow
Si vous souhaitez redimensionner tous les fichiers image pris en charge par Pillow au lieu de les extraire par extension, utilisez try … except … pour gérer les exceptions. C’est plus facile que de spécifier explicitement plusieurs extensions.
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