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

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)

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)

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:
