Skip to content

Beschneiden eines Teils des Bildes mit Python, Pillow (Trimming)

Python

Die Bildverarbeitungsbibliothek Pillow (PIL) von Python stellt Image.crop() zum Ausschneiden eines Teilbereichs eines Bildes zur Verfügung.

Dieser Artikel sterben following Inhalte mit Beispielcode.

  • Normale Ernte
  • Außenbereich angeben
  • Beschneiden Sie die Mitte des Bildes
  • Schneiden Sie das größte Quadrat aus dem Rechteck ab

Bitte lesen Sie den following Artikel für die Installation und praktische Verwendung von Pillow (PIL).

Verwenden Sie resize(), um die Größe des gesamten Bildes zu ändern, anstatt einen Teil des Bildes auszuschneiden, und verwenden Sie putalpha(), um ein transparentes Bild zu erstellen, indem Sie eine andere Form als ein Rechteck (z. B. einen Kreis) ausschneiden.

Verwenden Sie Slicing, um das Bild zuzuschneiden, das durch das NumPy-Array ndarray dargestellt wird.

Bild aus PIL importieren und Zielbild öffnen.

from PIL import Image

im = Image.open('data/src/astronaut_rect.bmp')

Originalbild - Astronaut

Normale Ernte

Legen Sie den Zuschneidebereich mit box=(links, oben, rechts, unten) fest.

Die Koordinaten oben links entsprechen (x, y) = (links, oben) und die Koordinaten unten rechts entsprechen (x, y) = (rechts, unten). Der zu beschneidende Bereich bleibt übrig

Achten Sie darauf, nicht zu vergessen, dass das Feld () erfordert.

im_crop = im.crop((60, 20, 400, 200))
im_crop.save('data/dst/astronaut_pillow_crop.jpg', quality=95)

Wenn SIE das maßgeschneiderte Bild nur speichern möchten, ohne es für andere Vorgänge zu verwenden, können Sie in eine Zeile schreiben.

im.crop((60, 20, 400, 200)).save('data/dst/astronaut_pillow_crop.jpg', quality=95)

Kissenbild.  normal beschneiden

Außenbereich angeben

Auch wenn die Außenseite des Bildes in den Zuschneidebereich gesetzt WIRD, WIRD kein Fehler ausgelöst und das Bild WIRD in Schwarz angezeigt.

im_crop_outside = im.crop((200, 150, 600, 360))
im_crop_outside.save('data/dst/astronaut_pillow_crop_outside.jpg', quality=95)

Kissenbild.crop Außenbereich

Beschneiden Sie die Mitte des Bildes

Wenn Sie die Mitte des Bildes auf eine beliebige Größe zuschneiden möchten, ist es praktisch, die folgende Funktion zu definieren.

def crop_center(pil_img, crop_width, crop_height):
    img_width, img_height = pil_img.size
    return pil_img.crop(((img_width - crop_width) // 2,
                         (img_height - crop_height) // 2,
                         (img_width + crop_width) // 2,
                         (img_height + crop_height) // 2))

Anwendungsbeispiel:

im_new = crop_center(im, 300, 150)
im_new.save('data/dst/astronaut_pillow_crop_center.jpg', quality=95)

Kissenbild.  Schnittmitte

Schneiden Sie das größte Quadrat aus dem Rechteck ab

Wenn Sie ein Miniaturbild erstellen, müssen Sie möglicherweise ein großes Quadrat aus dem rechteckigen Bild zuschneiden.

Definieren Sie eine Funktion, die ein Quadrat mit kurzer Seitenlänge aus der Mitte des rechteckigen Bildes herausschneidet.

SIE das Größenattribut, um die Höhe und Breite des Bildes zu erhalten, und min(), um das kürzere zu verwenden. Es WIRD die oben definierte Funktion crop_center() verwendet.

def crop_max_square(pil_img):
    return crop_center(pil_img, min(pil_img.size), min(pil_img.size))

Anwendungsbeispiel:

im_new = crop_max_square(im)
im_new.save('data/dst/astronaut_pillow_crop_max_square.jpg', quality=95)

Kissenbild.crop größtes Quadrat

Weitere Informationen zum Generieren von Miniaturbildern mit Kissen finden Sie im following Artikel.