
Si vous souhaitez redimensionner une image sans modifier le format d’image ni la rogner, vous pouvez ajuster la taille en ajoutant un rembourrage en haut, en bas, à gauche et à droite de l’image.
Vous pouvez remplir une image en utilisant new() et paste() de la bibliothèque de traitement d’image Python Pillow (PIL).
Cet article décrit le contenu suivant.
- Ajouter un rembourrage de n’importe quelle largeur verticalement et horizontalement
- Ajouter un rembourrage au rectangle pour le rendre carré
Consultez l’article suivant pour l’installation et l’utilisation de base de Pillow (PIL).
Consultez l’article suivant sur le rognage.
Importer une image à partir de PIL et charger l’image d’origine.
from PIL import Image
im = Image.open('data/src/astronaut_rect.bmp')

Ajouter un rembourrage de n’importe quelle largeur verticalement et horizontalement
Générez une image solide avec new() et collez l’image originale avec paste().
Définissez la fonction suivante.
Spécifiez la largeur de la marge en haut, à droite, en bas, à gauche et la couleur d’arrière-plan (R, G, B) (la valeur maximale est de 255) à colorier.
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
Exemple d’utilisation :
im_new = add_margin(im, 50, 10, 0, 100, (128, 0, 64))
im_new.save('data/dst/astronaut_add_margin.jpg', quality=95)

Ajouter un rembourrage au rectangle pour le rendre carré
Ajoutez un rembourrage au côté court pour le rendre carré tout en conservant le rapport d’aspect de l’image rectangulaire.
Définissez la fonction suivante.
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
Exemple d’utilisation :
im_new = expand2square(im, (0, 0, 0))
im_new.save('data/dst/astronaut_expand_square.jpg', quality=95)

Lorsque vous souhaitez créer un carré d’une certaine taille, comme créer une vignette, ajoutez un rembourrage, puis redimensionnez().
im_new = expand2square(im, (0, 0, 0)).resize((150, 150))
Pour plus d’informations sur la génération d’images miniatures, consultez l’article suivant :
