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')
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)
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)
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: