
Das Bildmodul der Bildverarbeitungsbibliothek Pillow (PIL) bietet die Methode resize() zum Ändern der Größe von Bildern.
Image.resize(size, resample=0)
Gibt eine in der Größe veränderte Kopie dieses Bildes zurück.
Bildmodul – Pillow (PIL Fork) 4.0.0 Dokumentation
Dieser Artikel hat folgenden Inhalt.
- Verwendung von Image.resize()
- Beispielcode für die Batch-Größenänderung
- Ändern Sie die Größe nur von Dateien mit bestimmten Erweiterungen
- Ändern Sie die Größe aller von Kissen unterstützten Bilddateien
Informationen zur Installation und einfachen Verwendung von Pillow (PIL) finden Sie im following Artikel.
Verwenden Sie crop(), um einen Teil des Bildes zuzuschneiden.
Verwendung von Image.resize()
Übergeben Sie ein Tupel von (Breite, Höhe) an die Argumentgröße.
Übergeben Sie den für das Resampling verwendeten Filter an das Argument resampling. Es gibt die folgenden 6 Arten. Wenn weggelassen, wird NEAREST standardmäßig verwendet.
Filter
– NÄCHSTE
– BOX
– BILINEAR
– HAMMING
– BICUBIC
– LANCZOS
Concepts — Pillow (PIL Fork) 4.0.0 Dokumentation
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')
Die Verarbeitung von BICUBIC und LANCZOS dauert länger als NEAREST, aber die Qualität ist besser.
Die Größe des linken Bildes wird durch den NEAREST-Filter und die Größe des rechten Bildes durch den LANCZOS-Filter geändert.


Im Beispielbeispiel ist die Bildgröße auf (256, 256) festgelegt. Um es basierend auf der Größe des Originalbildes festzulegen, gehen Sie wie folgt vor.
img_resize = img.resize((img.width // 2, img.height // 2))
img_resize_lanczos.save('data/dst/lena_pillow_resize_half.jpg')
Da die Größe als ganze Zahl angegeben werden sollte, WIRD // verwendet.
Beispielcode für die Batch-Größenänderung
Holen Sie sich für die Stapelgrößenänderung die Pfadzeichenfolge der Dateien im Zielordner (Verzeichnis) mit glob(), ändern Sie die Größe mit resize() und speichern Sie sie mit dem neuen Dateinamen mit save().
Ändern Sie die Größe nur von Dateien mit bestimmten Erweiterungen
Der Beispielcode zum Extrahieren nur der Dateien mit der Erweiterung jpg lautet wie folgt:
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))
Wenn Sie Dateien mit mehreren Erweiterungen erhalten möchten, können Sie diese auswählen, nachdem Sie die Pfade aller Dateien mit glob() extrahiert haben.
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))
Ändern Sie die Größe aller von Kissen unterstützten Bilddateien
Wenn Sie die Größe aller von Pillow unterstützten Bilddateien ändern möchten, anstatt sie nach Erweiterung zu extrahieren, verwenden Sie try … außer …, um Ausnahmen zu behandeln. Es ist, als einfacher mehrere Erweiterungen explizit anzugeben.
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