Maison >développement back-end >Tutoriel Python >Comment conserver les proportions lors du redimensionnement des images avec PIL ?

Comment conserver les proportions lors du redimensionnement des images avec PIL ?

DDD
DDDoriginal
2024-12-06 18:29:14604parcourir

How to Maintain Aspect Ratio When Resizing Images with PIL?

Préserver les proportions lors du redimensionnement des images à l'aide de PIL

Dans Python Imaging Library (PIL), redimensionner une image tout en conservant ses proportions peut être obtenu grâce à des calculs spécifiques. Lors de la création de vignettes, il est crucial de conserver les proportions d'origine de l'image.

Solution :

  1. Définir une taille maximale : Déterminer les dimensions maximales de l'image redimensionnée.
  2. Calculer le taux de redimensionnement : Calculez un rapport en prenant le minimum de (largeur maximale/largeur originale) et (hauteur maximale/hauteur originale).
  3. Déterminez la taille appropriée : Multipliez la taille originale de l'image par la valeur calculée ratio pour obtenir les dimensions appropriées pour le redimensionnement.

Pour plus de simplicité, PIL fournit la méthode Image.thumbnail pour gérer le redimensionnement tout en préservant l'aspect ratio :

import os, sys
from PIL import Image

size = (128, 128) # Desired thumbnail size

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(f"Cannot create thumbnail for '{infile}'")

Dans ce script, les images sont redimensionnées à une taille de vignette de (128, 128) en utilisant le rééchantillonnage de Lanczos pour une qualité d'image améliorée.

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