Skip to content

Ajouter du padding à l’image avec Python, Pillow

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

image originale - astronaute

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)

astronaute ajouter un rembourrage

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)

l'astronaute se transforme en carré

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 :