57 votes

LIP : Vignette et obtention d'une image carrée

Appel à

image = Image.open(data)
image.thumbnail((36,36), Image.NEAREST)

maintiendra le rapport d'aspect. Mais je dois finir par afficher l'image comme ceci :

<img src="/media/image.png" style="height:36px; width:36px" />

Puis-je avoir un style "letterbox" avec une image transparente ou blanche autour de l'image ?

1voto

titsitits Points 56

Pourquoi ne pas simplement utiliser la méthode de redimensionnement ?

from PIL import Image
image = Image.open('/path/to/img.png')
image = image.resize((36,36), Image.ANTIALIAS)

Voir les recommandations pour le redimensionnement des images dans cette note de mise à jour : https://pillow.readthedocs.io/en/stable/releasenotes/5.3.0.html

0voto

Amirhos Imani Points 165

Vous pouvez envelopper la réponse de Nadia dans cette fonction, ce qui vous permet de contrôler la taille et le fond.

def make_square(im, min_size=36, fill_color=(255, 255, 255, 0)):
    x, y = im.size
    size = min(min_size, x, y)
    new_im = Image.new('RGBA', (size, size), fill_color)
    im.thumbnail((256, 256))
    new_im.paste(im, (int((x - size) / 2), int((y -size) / 2))
    return new_im

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X