CodeGym /Cours Java /Python SELF FR /Redimensionnement des images

Redimensionnement des images

Python SELF FR
Niveau 45 , Leçon 1
Disponible

1. Chargement et sauvegarde d'images

Pour charger des images dans Pillow, on utilise la classe Image. Une fois chargée, l'image peut être transformée et sauvegardée dans différents formats. Regardons les opérations principales pour charger et sauvegarder des images.

Chargement d'image

Pour charger une image, utilise la méthode Image.open(). Elle permet d'ouvrir une image de tout format supporté.

Python

from PIL import Image

# Ouverture d'une image
image = Image.open("example.jpg")

# Affichage des informations sur le fichier
print(image.format)  # Format de l'image, par exemple, JPEG ou PNG
print(image.size)    # Dimensions de l'image (largeur, hauteur)
print(image.mode)    # Mode couleur, par exemple, RGB ou Niveaux de gris

Ce code charge l'image example.jpg et affiche ses principales caractéristiques : format, dimensions et mode couleur. Si l'image ne se trouve pas dans le même dossier, spécifie le chemin complet vers le fichier.

Sauvegarde d'image

Après avoir chargé et modifié une image, tu peux la sauvegarder dans tout autre format supporté, simplement en précisant l'extension souhaitée dans le nom du fichier. La méthode save() permet de définir le nom et le format du fichier de sortie.

Python

# Sauvegarde de l'image dans un autre format
image.save("example.png")  # Sauvegarde l'image au format PNG

Tu peux également ajuster la qualité de l'image sauvegardée afin de réduire la taille du fichier, ce qui est particulièrement utile pour les images au format JPEG.

Python

# Sauvegarde avec changement de qualité
image.save("compressed_example.jpg", quality=85)  # La valeur quality varie de 1 à 95

2. Redimensionnement des images

Le redimensionnement est l'une des tâches les plus courantes lors du travail avec des images. Pillow offre plusieurs façons de redimensionner, y compris le changement précis des paramètres de largeur et de hauteur, le redimensionnement proportionnel et la création de miniatures.

Redimensionnement avec la méthode resize()

La méthode resize() permet de spécifier les dimensions exactes de l'image (largeur et hauteur), mais l'image peut être déformée si les nouvelles dimensions ne conservent pas les proportions d'origine.

Python

# Définir une nouvelle taille
new_size = (800, 600)
resized_image = image.resize(new_size)

# Sauvegarde de l'image redimensionnée
resized_image.save("resized_example.jpg")

Dans cet exemple, l'image est redimensionnée à 800x600 pixels et sauvegardée dans un nouveau fichier. Si l'image originale a d'autres proportions, elle sera étirée ou compressée pour correspondre aux nouvelles dimensions.

Redimensionnement proportionnel avec thumbnail()

Pour redimensionner une image tout en conservant ses proportions, utilise la méthode thumbnail(). Cette méthode réduit automatiquement l'image pour qu'elle corresponde aux dimensions données tout en conservant les proportions d'origine. Cela est particulièrement utile pour créer des miniatures.

Python

# Création d'une miniature avec des dimensions maximales de 400x400 pixels
image.thumbnail((400, 400))

# Sauvegarde de la miniature
image.save("thumbnail_example.jpg")

La méthode thumbnail() modifie l'image "en place", ce qui signifie que les modifications se produisent dans l'objet image d'origine. Après l'appel de thumbnail(), Pillow réduira l'image pour que ses dimensions ne dépassent pas 400x400 pixels, tout en conservant les proportions.

Redimensionnement avec rognage via ImageOps.fit()

Parfois, il est nécessaire de redimensionner une image pour qu'elle corresponde exactement aux dimensions spécifiées, tout en conservant les proportions en coupant les parties inutiles. Dans ce cas, tu peux utiliser la méthode ImageOps.fit().

Python

from PIL import ImageOps

# Définir une nouvelle taille
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# Sauvegarde de l'image rognée
fitted_image.save("fitted_example.jpg")

La méthode ImageOps.fit() rogne automatiquement l'image pour qu'elle corresponde aux dimensions spécifiées sans distorsion. Par exemple, si l'image d'origine est rectangulaire, la méthode coupera les bords pour qu'elle devienne carrée et corresponde à la taille 400x400 pixels.

3. Exemple de code complet

Voici un exemple de code qui combine toutes les méthodes discutées — de chargement au redimensionnement et à la sauvegarde d'images.

Python

from PIL import Image, ImageOps

# Ouverture de l'image
image = Image.open("example.jpg")

# Redimensionnement sans préserver les proportions
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# Réduction proportionnelle de l'image
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# Redimensionnement avec rognage pour correspondre à une taille spécifiée
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

Explications des méthodes de redimensionnement

  1. resize(): permet de définir des dimensions arbitraires, mais peut entraîner une déformation de l'image si les nouvelles dimensions ne respectent pas les proportions de l'original.
  2. thumbnail(): redimensionne l'image, tout en préservant les proportions. Utile pour créer des miniatures et réduire des images grandes.
  3. ImageOps.fit(): redimensionne l'image aux dimensions spécifiées avec rognage des bords. Utilisé pour s'assurer que l'image correspond exactement aux dimensions spécifiées sans déformation.

4. Conseils :

Usage pratique du redimensionnement des images

  1. Optimisation des images pour les sites web : Les grandes images peuvent ralentir le chargement d'une page, il est donc important de les optimiser en réduisant leur taille sans perte de qualité.
  2. Création de miniatures pour les galeries : Utiliser thumbnail() permet de créer rapidement des miniatures d'images à afficher en aperçu.
  3. Adaptation des images à des dimensions spécifiques : Lorsque tu dois ajuster une image à des dimensions fixes, par exemple pour un avatar ou un profil, la méthode ImageOps.fit() permet de rogner et de redimensionner l'image pour répondre à ces exigences.

Conseils sur le choix des méthodes

Utilise resize() lorsque tu veux définir précisément la largeur et la hauteur d'une image, et que ça ne te dérange pas que les proportions changent.

Adopte thumbnail() pour créer des miniatures ou lorsque tu veux réduire une image en conservant ses proportions.

Emploie ImageOps.fit() lorsque tu as besoin d'une image aux dimensions spécifiques, mais sans distorsion des proportions. Cette méthode rogne les parties inutiles, ce qui est pratique pour adapter l'image à un cadre donné.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION