Skip to content

Aggiungere padding all’immagine con Python, Pillow

Python

Se desideri ridurre un’immagine ma non desideri modificare le proporzioni o ritagliarla, puoi regolare le dimensioni aggiungendo il riempimento in alto, in basso, a sinistra ea destra dell’immagine.

Puoi compilare un’immagine usando new() e paste() della libreria di elaborazione delle immagini Python Pillow (PIL).

In questo articolo vengono descritti i seguenti contenuti.

  • Aggiungi imbottitura di qualsiasi larghezza verticalmente e orizzontalmente
  • Aggiungi imbottitura al rettangolo per formare quadrato

Vedere il seguente articolo per l’installazione e l’utilizzo di base di Pillow (PIL).

Vedere il seguente articolo sul taglio.

Importa immagine da PIL e carica l’immagine originale.

from PIL import Image

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

immagine originale - astronauta

Aggiungi imbottitura di qualsiasi larghezza verticalmente e orizzontalmente

Genera un’immagine solida con new() e incolla l’immagine originale con paste().

Definire la seguente funzione.

Specificare la larghezza del margine in alto, a destra, in basso, a sinistra e il colore di sfondo (R, G, B) (il valore massimo è 255) da colorare.

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

Esempio di utilizzo:

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

l'astronauta aggiunge imbottitura

Aggiungi imbottitura al rettangolo per formare quadrato

Aggiungi imbottitura al lato corto per rendere quadrato mantenendo le dimensioni dell’immagine rettangolare.

Definire la seguente funzione.

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

Esempio di utilizzo:

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

l'astronauta si espande in quadrato

Quando vuoi creare un quadrato di una certa dimensione, ad esempio una miniatura, aggiungi il riempimento e poi ridimensiona().

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

Per ulteriori informazioni sulla generazione di immagini in miniatura, vedere il seguente articolo: