Skip to content

Redimensionner des images avec python-resize-image

3 août 2016

python-resize-image est une bibliothèque python disponible sur pypi.python.org. C’est une surcouche à PIL qui simplifie son usage pour des redimensionnements courants d’image. Bien pratique, elle ne remplacera pas PIL pour toutes les autres possibilités comme les empilements d’image par exemple.

La bibliothèque est utilisable avec python2 et python3 mais le fichier wheel n’a été fait que pour la version 2.
Pour l’installer sur python2, pip install python-resize-image suffit.
Pour l’installer sur python3, il faut d’abord cloner le projet, créer l’archive avant de l’installer dans son virtualenv.

Cet article montre un rendu d’exemple pour chaque fonction.

L’image de départ fait 1000 × 413 pixels :

Le fichier d'origine avant modification

Crop : resize_crop()

Dimension d’arrivée : 800 x 700 pixels

L’image d’arrivée possède une zone transparente au-dessus et au-dessous de la photo.

Avec la fonction resize_crop()

Cover : resize_cover()

Dimension d’arrivée : 800 x 700 pixels

Contrairement au crop, l’image d’arrivée est complètement remplie par la photo d’origine

Avec la fonction resize_cover()

Contain : resize_contain()

Dimension d’arrivée : 800 x 700 pixels

Comme le crop, l’image d’arrivée possède une zone transparente au-dessus et au-dessous de la photo.

Avec la fonction resize_contain()

Largeur fixée : resize_width()

Dimension d’arrivée : 400 x 165 pixels

Pas de transparence. L’image d’arrivée est un redimensionnement de l’image de départ, sous la contrainte de la largeur donnée en paramètre de resize_with().

Avec la fonction resize_width()

Hauteur fixée : resize_height()

Dimension d’arrivée : 969 x 400 pixels

Le comportement est équivalent à resize_width(), mais pour la hauteur.

Avec la fonction resize_height()

Vignette : resize_thumbnail()

Dimension d’arrivée : 800 x 330 pixels

La transformation respecte le ratio de départ et redimensionne au mieux pour respecter les dimensions passées en paramètre. Dans l’exemple, les 800 pixels pour la largeur sont bien là mais les 700 pixels demandés pour la hauteur ont été réduits à 330.

Avec la fonction resize_thumbnail()

Sources

J’ai pris la photo au Cap (en Afrique du Sud, pas en France) la semaine précédent la DebConf 16.

L’ensemble des images sont disponibles à http://stephane.yaal.fr/python-resize-image/ au cas où l’envoi sur WordPress ait modifié les données.

Le code source qui a permis de produire les images :

from PIL import Image
from resizeimage import resizeimage

with open('origine_1000.png', 'r') as f:
    TAILLE = [800, 700]
    FIXE = 400
    img = Image.open(f)
    img = resizeimage.resize_crop(img, TAILLE)
    img.save('crop.png', img.format)
    
    img = Image.open(f)
    img = resizeimage.resize_cover(img, TAILLE)
    img.save('cover.png', img.format)
    
    img = Image.open(f)
    img = resizeimage.resize_contain(img, TAILLE)
    img.save('contain.png', img.format)
    
    img = Image.open(f)
    img = resizeimage.resize_width(img, FIXE)
    img.save('width.png', img.format)
    
    img = Image.open(f)
    img = resizeimage.resize_height(img, FIXE)
    img.save('height.png', img.format)
    
    img = Image.open(f)
    img = resizeimage.resize_thumbnail(img, TAILLE)
    img.save('thumbnail.png', img.format)

From → Python

Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :