
La libreria di elaborazione delle immagini Pillow (PIL) di Python fornisce Image.crop() per ritagliare un’area parziale di un’immagine.
In questo articolo vengono descritti i seguenti contenuti con codice di esempio.
- Raccolto normale
- Specificare l’area esterna
- Ritaglia il centro dell’immagine
- Ritaglia il quadrato più grande dal rettangolo
Si prega di consultare il seguente articolo per l’installazione e l’utilizzo di base di Pillow (PIL).
Usa resize() per ridimensionare l’intera immagine invece di ritagliarne una parte e usa putalpha() per creare un’immagine trasparente ritagliando una forma diversa da un rettangolo (come un cerchio).
Usa lo slicing per ritagliare l’immagine rappresentata dall’array NumPy ndarray.
Importa immagine da PIL e apri l’immagine di destinazione.
from PIL import Image
im = Image.open('data/src/astronaut_rect.bmp')
Raccolto normale
Imposta l’area di ritaglio con box=(sinistra, in contralto, a destra, in basso).
Le coordinate a sinistra contralto a (x, y) = (a destra, in contralto) e le coordinate in basso a destra contralto a (x, y) = (a destra, in basso). L’area da ritagliare è rimasta
Fai attenzione a non dimenticare che la casella richiede ().
im_crop = im.crop((60, 20, 400, 200))
im_crop.save('data/dst/astronaut_pillow_crop.jpg', quality=95)
Se vuoi solo salvare l’immagine ritagliata senza usarla per altre operazioni, puoi scrivere in una riga.
im.crop((60, 20, 400, 200)).save('data/dst/astronaut_pillow_crop.jpg', quality=95)
Specificare l’area esterna
Anche se l’esterno dell’immagine è impostato nell’area di ritaglio, non viene generato un errore e l’immagine viene l in nero.
im_crop_outside = im.crop((200, 150, 600, 360))
im_crop_outside.save('data/dst/astronaut_pillow_crop_outside.jpg', quality=95)
Ritaglia il centro dell’immagine
Se si ritaglia desiderare il centro dell’immagine a qualsiasi dimensione, è conveniente definire la seguente funzione.
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))
Esempio di utilizzo:
im_new = crop_center(im, 300, 150)
im_new.save('data/dst/astronaut_pillow_crop_center.jpg', quality=95)
Ritaglia il quadrato più grande dal rettangolo
Quando si crea un’immagine in miniatura, potrebbe essere necessario ritagliare un quadrato il più grande possibile dall’immagine rettangolare.
Definire una funzione che ritaglia un quadrato di lato corto dal centro dell’immagine rettangolare.
Usa l’attributo size per ottenere l’altezza e la larghezza dell’immagine e min() per quella più corta. Viene utilizzata la funzione crop_center() definita sopra.
def crop_max_square(pil_img):
return crop_center(pil_img, min(pil_img.size), min(pil_img.size))
Esempio di utilizzo:
im_new = crop_max_square(im)
im_new.save('data/dst/astronaut_pillow_crop_max_square.jpg', quality=95)
Vedere il seguente articolo per ulteriori informazioni sulla generazione di immagini in miniatura con Pillow.