
La bibliothèque de traitement d’image Pillow (PIL) de Python fournit Image.crop() pour découper une zone partielle d’une image.
Cet article décrit le contenu suivant avec un exemple de code.
- Culture normale
- Spécifiez la zone extérieure
- Recadrer le centre de l’image
- Recadrer le plus grand carré du rectangle
Veuillez consulter l’article suivant pour l’installation et l’utilisation de base de Pillow (PIL).
Utilisez resize() pour redimensionner l’image entière au lieu de découper une partie de l’image, et utilisez putalpha() pour créer une image transparente en découpant une forme autre qu’un rectangle (comme un cercle).
Utilisez le découpage en tranches pour recadrer l’image représentée par le tableau NumPy ndarray.
Importer l’image à partir de PIL et ouvrir l’image cible.
from PIL import Image
im = Image.open('data/src/astronaut_rect.bmp')

Culture normale
Définissez la zone de recadrage avec box=(gauche, haut, droite, bas).
Les coordonnées en haut à gauche correspondent à (x, y) = (gauche, supérieur) et les coordonnées en bas à droite correspondent à (x, y) = (droite, inférieur). La zone à recadrer est laissée
Attention à ne pas oublier que la case nécessite ().
im_crop = im.crop((60, 20, 400, 200))
im_crop.save('data/dst/astronaut_pillow_crop.jpg', quality=95)
Si vous souhaitez simplement enregistrer l’image recadrée sans l’utiliser pour d’autres opérations, vous pouvez écrire sur une seule ligne.
im.crop((60, 20, 400, 200)).save('data/dst/astronaut_pillow_crop.jpg', quality=95)

Spécifiez la zone extérieure
Même si l’extérieur de l’image est défini dans la zone de recadrage, aucune erreur n’est générée et l’image s’affiche en noir.
im_crop_outside = im.crop((200, 150, 600, 360))
im_crop_outside.save('data/dst/astronaut_pillow_crop_outside.jpg', quality=95)

Recadrer le centre de l’image
Si vous souhaitez recadrer le centre de l’image à n’importe quelle taille, il est pratique de définir la fonction suivante.
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))
Exemple d’utilisation :
im_new = crop_center(im, 300, 150)
im_new.save('data/dst/astronaut_pillow_crop_center.jpg', quality=95)

Recadrer le plus grand carré du rectangle
Lors de la création d’une image miniature, vous devrez peut-être découper un carré aussi grand que possible à partir de l’image rectangulaire.
Définissez une fonction qui recadre un carré de petit côté à partir du centre de l’image rectangulaire.
Utilisez l’attribut size pour obtenir la hauteur et la largeur de l’image, et min() pour obtenir la plus courte. La fonction crop_center() définie ci-dessus est utilisée.
def crop_max_square(pil_img):
return crop_center(pil_img, min(pil_img.size), min(pil_img.size))
Exemple d’utilisation :
im_new = crop_max_square(im)
im_new.save('data/dst/astronaut_pillow_crop_max_square.jpg', quality=95)

Consultez l’article suivant pour plus d’informations sur la génération d’images miniatures avec Pillow.
