Skip to content

Fügen Sie mit Python, Pillow Füllungen zum Bild hinzu

Python

Wenn SIE die Größe eines Bilds ändern möchten, aber das Seitenverhältnis nicht ändern oder es zuschneiden möchten, können Sie die Größe anpassen, indem Sie oben, unten, links und rechts im Bild Füllmaterial hinzufügen.

Sie können ein Bild mit new() und paste() der Python-Bildverarbeitungsbibliothek Pillow (PIL) auffüllen.

Dieser Artikel hat folgenden Inhalt.

  • Fügen Sie vertikal und horizontal eine Polsterung beliebiger Breite hinzu
  • Fügen Sie dem Rechteck Polsterung hinzu, um es quadratisch zu machen

Siehe den following Artikel für die Installation und klassische Verwendung von Pillow (PIL).

Siehe den folgenden Artikel über das Trimmen.

Bild aus PIL importieren und Originalbild laden.

from PIL import Image

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

Originalbild - Astronaut

Fügen Sie vertikal und horizontal eine Polsterung beliebiger Breite hinzu

erstellen Sie mit new() ein festes Bild und fügen Sie das Originalbild mit paste() ein.

Definieren Sie sterben folgende Funktion.

Geben Sie die Breite des Rands oben, rechts, unten, links und die Hintergrundfarbe (R, G, B) (Maximalwert ist 255) für Farbe an.

def add_margin(pil_img, top, right, bottom, left, color):
    width, height = pil_img.size
    new_width = width + right + left
    new_height = height + top + bottom
    result = Image.new(pil_img.mode, (new_width, new_height), color)
    result.paste(pil_img, (left, top))
    return result

Anwendungsbeispiel:

im_new = add_margin(im, 50, 10, 0, 100, (128, 0, 64))
im_new.save('data/dst/astronaut_add_margin.jpg', quality=95)

astronaut polsterung hinzufügen

Fügen Sie dem Rechteck Polsterung hinzu, um es quadratisch zu machen

Fügen Sie der kurzen Seite Polsterung hinzu, um sie quadratisch zu machen, while SIE das Seitenverhältnis des rechteckigen Bilds beibehalten.

Definieren Sie sterben folgende Funktion.

def expand2square(pil_img, background_color):
    width, height = pil_img.size
    if width == height:
        return pil_img
    elif width > height:
        result = Image.new(pil_img.mode, (width, width), background_color)
        result.paste(pil_img, (0, (width - height) // 2))
        return result
    else:
        result = Image.new(pil_img.mode, (height, height), background_color)
        result.paste(pil_img, ((height - width) // 2, 0))
        return result

Anwendungsbeispiel:

im_new = expand2square(im, (0, 0, 0))
im_new.save('data/dst/astronaut_expand_square.jpg', quality=95)

Astronaut zum Quadrat erweitern

Wenn SIE ein Quadrat mit einer bestimmten Größe erstellen möchten, z. B. ein Miniaturbild, fügen Sie eine Polsterung hinzu und ändern Sie dann die Größe ().

im_new = expand2square(im, (0, 0, 0)).resize((150, 150))

Weitere Informationen zum Generieren von Miniaturbildern finden Sie im following Artikel: