1. Introduction
Aperçu de Python et Pillow
Python est un langage de programmation largement utilisé par les développeurs et les data scientists en raison de sa syntaxe simple et de son support étendu de bibliothèques. Parmi celles-ci, Pillow (anciennement PIL : Python Imaging Library) est une bibliothèque populaire de traitement d’images en Python.
Pillow prend en charge divers formats d’images tels que JPEG, PNG et GIF, et permet une large gamme de manipulations d’images, y compris le redimensionnement, le recadrage, le filtrage, l’ajout de texte, et plus encore. Il est couramment utilisé dans les applications et les projets qui nécessitent le chargement, la sauvegarde et la modification d’images.
Objectif de cet article
Cet article fournit un guide complet sur l’utilisation de la bibliothèque Pillow de Python pour le traitement d’images, des opérations de base aux techniques avancées. Plus précisément, il couvre les tâches fondamentales telles que le chargement et la sauvegarde d’images, le redimensionnement, la rotation, le filtrage, le dessin de texte et la composition d’images.
En lisant ceci, vous acquerrez une compréhension approfondie de la façon d’utiliser Pillow et obtiendrez les connaissances et les compétences nécessaires pour l’appliquer dans des projets réels.
2. Comment installer Pillow
2.1 Installation de Pillow dans votre environnement Python
Pour utiliser Pillow, vous devez d’abord installer la bibliothèque dans votre environnement Python. Le processus d’installation est simple — il suffit d’entrer la commande suivante dans votre terminal (ou Invite de commandes sur Windows).
pip install Pillow
La commande pip est un outil pour gérer les paquets Python. L’exécution de cette commande installera automatiquement la bibliothèque Pillow, vous permettant d’effectuer des tâches de traitement d’images.
2.2 Comment vérifier l’installation
Après l’installation de Pillow, vous devriez exécuter un script simple pour vérifier qu’il fonctionne correctement. Écrivez et exécutez le code suivant dans un fichier de script Python :
from PIL import Image
# Test code for verifying Pillow installation
img = Image.new('RGB', (100, 100), color = 'red')
img.save('test_image.png')
Ce code crée une image rouge de 100×100 pixels et la sauvegarde sous le nom « test_image.png ». Si le fichier image est créé correctement, Pillow a été installé et fonctionne correctement.
2.3 Problèmes d’installation courants et solutions
Occasionnellement, vous pourriez rencontrer des problèmes lors de l’installation de Pillow. Voici quelques problèmes courants et leurs solutions :
- Utilisation d’une version obsolète de Python Pillow prend en charge Python 3.x et versions ultérieures. Si vous utilisez une version plus ancienne de Python, l’installation peut échouer. Utilisez
python --versionpour vérifier votre version de Python et mettez-la à jour si nécessaire. - Problèmes de dépendances Pendant l’installation, vous pourriez rencontrer des dépendances manquantes. Dans ce cas, suivez le message d’erreur pour installer les paquets manquants individuellement, ou utilisez la commande suivante pour installer les dépendances automatiquement :
pip install Pillow --upgrade
- Variables d’environnement incorrectes Sur Windows, Pillow peut ne pas fonctionner correctement si le chemin de Python ou de Pip n’est pas défini correctement dans les variables d’environnement. Vérifiez que le chemin correct est configuré.

3. Chargement et affichage d’images
3.1 Comment charger un fichier image en Python
Charger une image est l’une des étapes fondamentales dans le traitement d’images avec Pillow. Vous pouvez utiliser la méthode Image.open() pour ouvrir un fichier image.
Voici un extrait de code exemple pour charger une image :
from PIL import Image
# Load an image file
img = Image.open('sample.jpg')
# Display image information
print(img.format) # File format (e.g., JPEG, PNG)
print(img.size) # Size (width, height)
print(img.mode) # Color mode (e.g., RGB, L)
Ce code utilise Image.open() pour ouvrir un fichier image et récupérer son format, sa taille et son mode de couleur. Il suffit de spécifier le chemin du fichier pour charger l’image.
3.2 Affichage d’une image
Après avoir chargé une image, vous pouvez l’afficher en utilisant la méthode show(). Cette méthode ouvre l’image dans le visualiseur système par défaut.
Consultez le code suivant pour afficher une image :
from PIL import Image
# Load an image file
img = Image.open('sample.jpg')
# Display the image
img.show()
Ce code affiche l’image spécifiée à l’aide du visualiseur d’images par défaut du système, vous permettant de confirmer visuellement son contenu avant de poursuivre le traitement.
3.3 Récupération d’informations détaillées sur l’image
Pillow vous permet d’extraire diverses informations sur une image, telles que sa largeur, sa hauteur et son format de fichier.
Voici comment récupérer les détails de l’image :
from PIL import Image
# Load an image file
img = Image.open('sample.jpg')
# Display image details
print(f'Image Size: {img.size}') # (Width, Height)
print(f'File Format: {img.format}') # Image format (JPEG, PNG, etc.)
print(f'Color Mode: {img.mode}') # Color mode (RGB, L, etc.)
Cela aide à rassembler les informations essentielles sur une image, ce qui peut être utile pour le redimensionnement, le recadrage et d’autres manipulations.
3.4 Formats d’image pris en charge par Pillow
Pillow prend en charge une variété de formats d’image, notamment :
- JPEG
- PNG
- GIF
- BMP
- TIFF
Ce large support de formats fait de Pillow un choix flexible pour gérer les images dans les applications web, le traitement de données, et plus encore.
4. Traitement d’image de base
4.1 Redimensionner une image
Le redimensionnement est une tâche courante de traitement d’image utilisée pour ajuster la résolution pour le web et les applications. Avec Pillow, vous pouvez facilement redimensionner les images à l’aide de la méthode resize().
Voici un exemple :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Resize the image (Width: 400px, Height: 300px)
resized_img = img.resize((400, 300))
# Save the resized image
resized_img.save('resized_sample.jpg')
Ce code redimensionne une image à (400, 300) pixels et l’enregistre comme un nouveau fichier.
4.2 Recadrer une image
Le recadrage est utile pour extraire une portion spécifique d’une image. La méthode crop() de Pillow vous permet de spécifier la zone à extraire.
Voici un exemple :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Crop the image (from top-left (100, 100) to bottom-right (300, 300))
cropped_img = img.crop((100, 100, 300, 300))
# Save the cropped image
cropped_img.save('cropped_sample.jpg')
Ce code extrait une partie de l’image et l’enregistre séparément.
4.3 Faire pivoter une image
Faire pivoter une image est simple avec la méthode rotate() de Pillow. Vous pouvez spécifier l’angle de rotation et, si nécessaire, utiliser expand=True pour éviter le recadrage de l’image.
Voici un exemple qui fait pivoter une image de 45 degrés :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Rotate the image by 45 degrees (expanding to fit the entire image)
rotated_img = img.rotate(45, expand=True)
# Save the rotated image
rotated_img.save('rotated_sample.jpg')
Ce code fait pivoter l’image de 45 degrés tout en garantissant que l’image entière reste visible grâce à l’utilisation de expand=True.
4.4 Retourner une image
Retourner une image horizontalement ou verticalement peut être fait facilement à l’aide de la méthode transpose() de Pillow.
Voici un exemple de retournement horizontal d’une image :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Flip the image horizontally
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
# Save the flipped image
flipped_img.save('flipped_sample.jpg')
Ce code retourne l’image horizontalement, créant une image miroir.
4.5 Autres fonctionnalités de traitement d’image de base dans Pillow
En plus du redimensionnement, du recadrage, de la rotation et du retournement, Pillow prend en charge diverses autres opérations de traitement d’image, telles que l’ajustement de la luminosité, du contraste et des modes couleur. Ces fonctionnalités permettent un montage d’image plus flexible et automatisé.

5. Conversion et sauvegarde des formats d’image
5.1 Conversion des formats d’image
Pillow facilite la conversion des formats d’image. Par exemple, vous pouvez convertir une image JPEG en format PNG en quelques lignes de code seulement.
Voici comment :
from PIL import Image
# Load a JPEG image
img = Image.open('sample.jpg')
# Save it as a PNG file
img.save('converted_image.png', 'PNG')
Ce code charge un fichier JPEG et l’enregistre au format PNG.
5.2 Comment enregistrer des images
Lors de l’enregistrement d’images avec Pillow, vous pouvez spécifier diverses options, telles que la qualité, l’optimisation et les paramètres JPEG progressif.
Par exemple, enregistrer une image JPEG avec des paramètres optimisés :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Save as JPEG with quality and optimization settings
img.save('optimized_image.jpg', 'JPEG', quality=95, optimize=True)
Le paramètre quality (0‑100) ajuste la qualité de l’image, tandis que optimize=True réduit la taille du fichier.
5.3 Enregistrement de JPEG progressifs
Les JPEG progressifs permettent aux images de se charger par étapes, améliorant l’expérience utilisateur sur les réseaux lents.
Voici comment enregistrer une image en JPEG progressif :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Save as a progressive JPEG
img.save('progressive_image.jpg', 'JPEG', quality=85, progressive=True)
Cela garantit que l’image apparaît progressivement lorsqu’elle est chargée sur une page web.
5.4 Conservation des données EXIF
Les données EXIF (Exchangeable Image File Format) contiennent des métadonnées telles que les réglages de l’appareil photo et les informations GPS. Pillow vous permet de conserver les données EXIF lors de l’enregistrement des images.
Voici un exemple :
from PIL import Image
# Load an image
img = Image.open('sample.jpg')
# Retrieve EXIF data
exif_data = img.info.get('exif')
# Save the image with EXIF data
img.save('exif_image.jpg', 'JPEG', exif=exif_data)
Cela conserve les données EXIF d’origine intactes.
6. Application de filtres et d’effets
6.1 Ajustement de la luminosité et du contraste
Pillow fournit le module ImageEnhance pour ajuster la luminosité et le contraste.
Voici comment ajuster la luminosité :
from PIL import Image, ImageEnhance
# Load an image
img = Image.open('sample.jpg')
# Increase brightness by 1.5 times
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(1.5)
# Save the modified image
bright_img.save('bright_sample.jpg')
Pour ajuster le contraste :
from PIL import Image, ImageEnhance
# Load an image
img = Image.open('sample.jpg')
# Increase contrast by 2.0 times
enhancer = ImageEnhance.Contrast(img)
contrast_img = enhancer.enhance(2.0)
# Save the modified image
contrast_img.save('contrast_sample.jpg')
6.2 Application de filtres de flou et de netteté
Vous pouvez utiliser ImageFilter pour appliquer divers filtres.
Pour flouter une image :
from PIL import Image, ImageFilter
# Load an image
img = Image.open('sample.jpg')
# Apply blur filter
blurred_img = img.filter(ImageFilter.BLUR)
# Save the blurred image
blurred_img.save('blurred_sample.jpg')
Pour affiner une image :
# Apply sharpen filter
sharpened_img = img.filter(ImageFilter.SHARPEN)
# Save the sharpened image
sharpened_img.save('sharpened_sample.jpg')
6.3 Utilisation de filtres de détection de contours
Vous pouvez utiliser des filtres de détection de contours pour l’analyse d’images.
Voici un exemple :
from PIL import Image, ImageFilter
# Load an image
img = Image.open('sample.jpg')
# Apply edge detection filter
edge_img = img.filter(ImageFilter.FIND_EDGES)
# Save the modified image
edge_img.save('edge_sample.jpg')
7. Dessiner du texte et des formes
7.1 Dessiner du texte sur une image
Vous pouvez ajouter du texte à l’aide du module ImageDraw.
Dessiner du texte de base :
from PIL import Image, ImageDraw, ImageFont
# Load an image
img = Image.open('sample.jpg')
# Create a drawing object
draw = ImageDraw.Draw(img)
# Draw text
draw.text((10, 10), 'Hello, Pillow!', fill=(255, 255, 255))
# Save the image
img.save('text_sample.jpg')
7.2 Dessiner des formes
Pillow prend également en charge le dessin de lignes, de rectangles et de cercles.
Exemple :
from PIL import Image, ImageDraw
# Load an image
img = Image.open('sample.jpg')
# Create a drawing object
draw = ImageDraw.Draw(img)
# Draw a line
draw.line((0, 0, 100, 100), fill=(255, 0, 0), width=5)
# Draw a rectangle
draw.rectangle((50, 50, 150, 150), outline=(0, 255, 0), width=3)
# Draw a circle
draw.ellipse((200, 200, 300, 300), outline=(0, 0, 255), width=3)
# Save the image
img.save('shape_sample.jpg')
8. Conclusion
Ce guide a couvert les techniques de traitement d’image fondamentales et avancées avec Pillow, y compris le chargement d’images, le redimensionnement, le recadrage, le filtrage et le dessin de texte. Avec ces connaissances, vous pouvez implémenter diverses tâches de manipulation d’images efficacement.
Pillow reste un outil puissant pour le développement web, la science des données et l’automatisation. Continuez à explorer ses fonctionnalités pour des applications plus avancées !


![[Guide complet de la fonction len() de Python] Explication détaillée, des bases à l’utilisation avancée](https://www.python.digibeatrix.com/wp-content/uploads/2024/09/0685743292b3fb3cddaf24e8d3a3b7ae-375x375.webp)
![[Guide complet de l’instruction with de Python] Simplifier la gestion des ressources](https://www.python.digibeatrix.com/wp-content/uploads/2024/09/a899e1b4cda16b8a13042ca3ec2153b5-375x375.webp)