Maison >développement back-end >Tutoriel Python >Comment redimensionner des images avec PIL tout en conservant les proportions ?

Comment redimensionner des images avec PIL tout en conservant les proportions ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 08:26:09825parcourir

How to Resize Images with PIL While Maintaining Aspect Ratio?

Redimensionner les images avec PIL tout en préservant les proportions

Lors de la création de vignettes, il peut être crucial de conserver les proportions d'origine des images. Dans cet article, nous explorerons comment y parvenir à l'aide de la bibliothèque d'imagerie Python (PIL).

Approche :

  1. Définir la taille maximale :Déterminez la largeur et la hauteur maximales souhaitées pour vos vignettes.
  2. Calculez le redimensionnement Ratio : Calculez le rapport de mise à l'échelle minimum en trouvant le plus petit des rapports largeur maximale/largeur et hauteur maximale/hauteur.
  3. Calculer une nouvelle taille : Multipliez la taille d'origine par le rapport calculé pour obtenir la taille appropriée pour la vignette.

Méthode alternative utilisant Bibliothèque PIL :

PIL fournit la méthode Image.thumbnail() spécialement conçue à cet effet. Il prend la taille maximale comme argument et ajuste automatiquement la taille de l'image tout en conservant les proportions.

Voici un exemple tiré de la documentation PIL :

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.Resampling.LANCZOS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn