Image de PIL.redimensionner () ne pas redimensionner l'image
J'ai un problème étrange avec PIL ne pas redimensionner l'image.
from PIL import Image
img = Image.open('foo.jpg')
width, height = img.size
ratio = floor(height / width)
newheight = ratio * 150
img.resize((150, newheight), Image.ANTIALIAS)
img.save('mugshotv2.jpg', format='JPEG')
CE code s'exécute sans aucune erreur et ME produit une image nommée mugshotv2.jpg
dans le bon dossier, mais il ne le redimensionne pas. Il y fait quelque chose, car la taille de l'image passe de 120 Ko à 20 Ko, mais les dimensions restent les mêmes.
Peut-être que vous pouvez également suggérer un moyen de recadrer les images en carrés avec moins de code. Je pensais un peu que Image.thumbnail
le fait, mais ce qu'il a fait, c'est qu'il a mis à l'échelle mon image à 150 px par sa largeur, laissant la hauteur 100px.
1 réponses
resize()
retourne une copie redimensionnée d'une image. Il ne modifie pas l'original. La bonne façon de l'utiliser est:
img = img.resize((150, newheight), image.ANTIALIAS)
Je pense que ce que vous cherchez est L'ImageOps.ajustement de la fonction. De PIL docs:
ImageOps.fit (image, Taille, méthode, saignement, centrage) = > image
Renvoie une version taillée et recadrée de l'image recadrée à la demande rapport d'aspect et taille. Taille l'argument est la taille de sortie demandée dans pixels, donnés en tant que (Largeur, Hauteur) tuple.