CodeGym /Cours /Python SELF FR /Gestion des formats et conversion

Gestion des formats et conversion

Python SELF FR
Niveau 46 , Leçon 2
Disponible

1. Identification du format d'image

Formats d'images pris en charge

Pillow prend en charge de nombreux formats d'images, tels que :

  • JPEG (JPG) : L'un des formats les plus utilisés pour les photos. Compresse l'image avec perte de qualité, mais réduit considérablement la taille du fichier. Ne prend pas en charge la transparence.
  • PNG : Format sans perte qui prend en charge la transparence (canal alpha). Idéal pour les logos, icônes et images nécessitant une netteté.
  • BMP : Format de haute qualité sans compression, mais avec une grande taille de fichier. Prend en charge la transparence.
  • TIFF : Populaire pour le stockage d'images sans perte. Souvent utilisé dans l'imprimerie.
  • WEBP : Format moderne avec une grande capacité de compression et supportant la transparence. Idéal pour les images web, car il offre une petite taille de fichier avec une bonne qualité.

Chargement d'une image pour la conversion

Avant de convertir une image, elle doit être chargée à l'aide de la méthode Image.open().

Python

from PIL import Image

# Ouverture de l'image
image = Image.open("example.jpg")
print(image.format)  # Vérifier le format initial de l'image

2. Conversion d'une image en un autre format

La méthode save() permet de sauvegarder les images dans différents formats, simplement en changeant l'extension dans le nom de fichier ou en spécifiant explicitement le format.

Conversion de JPEG en PNG

Pour convertir une image de JPEG en PNG, il suffit de spécifier une nouvelle extension lors de la sauvegarde du fichier :

Python

# Sauvegarde de l'image au format PNG
image.save("example_converted.png")

Ce code convertit une image du format JPEG au format PNG, en la sauvegardant avec le nom indiqué. PNG est parfait pour les images sans perte et prend également en charge les zones transparentes.

Conversion de PNG en JPEG

La conversion d'une image de PNG en JPEG est aussi possible, mais il est important de noter que JPEG ne prend pas en charge la transparence. Lors de la conversion, les zones transparentes seront remplies de blanc.

Python

# Conversion de PNG en JPEG (la transparence sera remplacée par du blanc)
image = image.convert("RGB")  # Passage en mode RGB nécessaire pour JPEG
image.save("example_converted.jpg", "JPEG")

La méthode convert("RGB") est utilisée pour convertir l'image en mode RGB, car JPEG ne prend pas en charge les zones transparentes. Ceci est nécessaire pour sauvegarder le fichier au format JPEG.

3. Gestion de la qualité de l'image

Pour optimiser les images, Pillow propose les paramètres quality et optimize, qui permettent de contrôler la qualité et la taille du fichier. Ces paramètres sont particulièrement utiles pour JPEG et PNG.

Optimisation et gestion de la qualité JPEG

Lors de la sauvegarde d'une image au format JPEG, le paramètre quality ajuste le niveau de compression. Plus la valeur de qualité est élevée, plus la taille du fichier est grande et plus la qualité de l'image est bonne. La valeur de quality varie de 1 à 95 (par défaut 75).

Python

# Sauvegarde d'une image JPEG avec une qualité réduite
image.save("example_compressed.jpg", "JPEG", quality=85)

Ce code sauvegarde une image avec une qualité de 85, ce qui permet généralement de conserver une bonne qualité tout en réduisant la taille du fichier. Si une qualité inférieure est nécessaire, par exemple pour créer des miniatures, on peut indiquer quality = 50.

Optimisation PNG

Pour PNG, le paramètre optimize = True effectue une compression sans perte en supprimant les données redondantes. Cela est particulièrement utile pour publier des images sur Internet.

Python

# Sauvegarde d'un PNG optimisé
image.save("example_optimized.png", "PNG", optimize=True)

L'optimisation PNG aide à réduire la taille du fichier sans perte de qualité, ce qui est particulièrement important pour les logos et icônes, où chaque kilooctet peut compter.

Comparaison de la qualité JPEG avec différents niveaux de compression

Voyons comment le changement du paramètre quality influence la taille du fichier et la qualité de l'image.

Python

# Sauvegarde d'une image JPEG avec différentes qualités
image.save("quality_95.jpg", "JPEG", quality=95)
image.save("quality_75.jpg", "JPEG", quality=75)
image.save("quality_50.jpg", "JPEG", quality=50)

Dans cet exemple, nous sauvegardons la même image avec trois niveaux de qualité : 95, 75 et 50. L'image avec une qualité de 95 sera pratiquement indiscernable de l'original, mais prendra plus d'espace, tandis que la qualité 50 entraînera une compression significative et une éventuelle perte de détails visible.

4. Utilisation du format WebP

Le format WebP est un format moderne qui prend en charge la compression avec et sans perte, ainsi que la transparence. Il est largement utilisé sur Internet en raison de son haut niveau de compression.

Conversion d'une image au format WebP

Python

# Conversion d'une image en WebP
image.save("example.webp", "WEBP", quality=80)

Dans cet exemple, nous sauvegardons une image au format WebP avec une qualité de 80. WebP permet d'obtenir une taille de fichier nettement inférieure par rapport à JPEG ou PNG tout en conservant une qualité similaire.

Exemple de conversion complète avec optimisation

Mettons maintenant en pratique toutes les méthodes étudiées et écrivons un script pour convertir une image en plusieurs formats avec optimisation.

Python

from PIL import Image

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

# Conversion en PNG avec optimisation
image.save("converted_optimized.png", "PNG", optimize=True)

# Conversion en JPEG avec qualité réduite
image_rgb = image.convert("RGB")  # Passage en mode RGB pour JPEG
image_rgb.save("converted_compressed.jpg", "JPEG", quality=85)

# Conversion en WebP avec optimisation de la qualité
image_rgb.save("converted_optimized.webp", "WEBP", quality=80)

Dans cet exemple :

  • Nous convertissons l'image en PNG avec optimisation, ce qui aide à réduire la taille du fichier sans perte.
  • Nous sauvegardons l'image au format JPEG avec une qualité de 85, ce qui garantit une bonne qualité et une petite taille de fichier.
  • Nous convertissons l'image au format WebP, idéal pour la publication sur Internet, tout en conservant une haute qualité avec une petite taille de fichier.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION