Pillow est la bibliothèque d'imagerie Python essentielle
Pillow est le fouk moderne et activement maintenu de la Python Imaging Library (PIL). Sa fonction principale est de fournir des capacités de traitement d'images robustes et efficaces directement dans les scripts Python. Vous pouvez ouvrir, manipuler, filtrer, améliorer et enregistrer des dizaines de formats d'image sans recourir à des éditeurs externes. Par exemple, la conversion de 100 images JPEG en PNG et leur redimensionnement à 50 % prennent moins de 2 secondes avec des opérations Pillow optimisées.
Si vous devez effectuer des opérations par lots, ajouter des filigranes, extraire des métadonnées ou créer des vignettes par programme, Pillow est la réponse directe. Plus de 70 % des tâches d'automatisation du traitement d'images basées sur Python utilisent Pillow comme bibliothèque principale , selon les statistiques de téléchargement de PyPI.
Pour utiliser Pillow efficacement, vous devez comprendre son flux de travail principal : ouvrir → traiter → enregistrer. Vous trouverez ci-dessous une implémentation pratique avec des exemples de code réels.
Courir pip installer Oreiller . Vérifiez avec python -c "à partir de l'image d'importation PIL ; print(Image.__version__)" . L'installation typique prend moins de 30 secondes sur une connexion haut débit stetard.
img = Image.open("input.jpg").convert("RVB") – essentiel pour la cohérence. img.thumbnail((800, 800)) – maintient le rapport, pas de distorsion. pour le fichier dans os.listdir("folder") : img.save("output.png", optimiser=True, qualité=85) – réduit la taille du fichier jusqu'à 40 % sans perte de qualité visible. Le script suivant traite tous les fichiers JPEG d'un répertoire, créant des vignettes de 256 x 256 pixels tout en préservant les métadonnées. Il réduit le temps de traitement total de 65 % par rapport aux boucles séquentielles non optimisées en utilisant des opérations sur place.
à partir de l'image d'importation PILimporter le système d'exploitationpour le nom de fichier dans os.listdir("originals") : si nom de fichier.endswith(".jpg") : img = Image.open(os.path.join("originaux", nom de fichier)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Pillow offre plus de 50 fonctions intégrées réparties dans 8 catégories principales. Vous trouverez ci-dessous un tableau structuré présentant ses fonctions principales, ses cas d'utilisation typiques et ses mesures de performances réelles.
| Catégorie de fonction | Méthodes clés | Utilisation typique | Moy. Temps (ms) |
|---|---|---|---|
| Conversion de formats | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12-35 |
| Transformations géométriques | .resize(), .rotate(), .crop() | Miniatures, alignement | 8-45 |
| Opérations de couleur | .convert(), .point() | Niveaux de gris, luminosité | 3 à 10 |
| Filtrage et amélioration | ImageFilter, ImageEnhance | Flou, netteté, contraste | 15-60 |
| Dessin & texte | ImageDraw.Draw() | Filigranes, annotations | 20-80 |
Pillow réduit la longueur du code de traitement d'image de 73 % en moyenne par rapport aux solutions Python natives (par exemple, itération manuelle des pixels). Par exemple, l'application d'un flou gaussien avec Python natif nécessite environ 15 lignes de boucles imbriquées ; avec Pillow, c'est img.filter(ImageFilter.GaussianBlur(rayon=2)) – une ligne.
Basées sur les forums communautaires et les problèmes GitHub, voici les 6 questions les plus fréquemment posées sur Pillow, avec des réponses directes et exploitables.
Oui. Utiliser Image.open("animé.gif") et parcourir les images avec chercher() . Pillow peut lire et écrire des GIF animés, préservant les données de synchronisation jusqu'à une précision de 1 ms. Exemple : extrayez toutes les images pour séparer les images en moins de 0,5 seconde pour un GIF de 20 images.
Utiliser Image.open().convert() et traiter en morceaux avec .crop() . Pour une image de 100 MP, le chargement paresseux de Pillow n'utilise initialement que 5 à 10 Mo. au lieu de charger l'image entière. De plus, précisez Image.LANCZOS pour un sous-échantillonnage de haute qualité et économe en mémoire.
Pillow prend en charge nativement plus de 30 formats, notamment JPEG, PNG, TIFF, BMP, GIF, WebP et ICO. La prise en charge de WebP dans Pillow permet d'obtenir une compression 25 à 35 % supérieure à celle du JPEG pour la même qualité. (basé sur les études WebP de Google). Pour vérifier tous les formats pris en charge : à partir des fonctionnalités d'importation PIL ; fonctionnalités.get_supported() .
Pour les E/S de base et les transformations simples (redimensionnement, recadrage, conversion de format), Pillow est 15 à 30 % plus rapide qu'OpenCV sur le même matériel parce qu'il a des frais généraux inférieurs. Pour la vision par ordinateur complexe (détection de fonctionnalités, correspondance), OpenCV est supérieur. Choisissez toujours Pillow pour l’automatisation du traitement d’images par lots.
Utiliser Image.alpha_composite() or .pâte() avec une superposition transparente. Un lot de 1 000 images (chacune de 2 Mo) peut être filigrané en environ 45 secondes en utilisant une simple boucle for et les méthodes de dessin de Pillow. Consultez l’exemple de code dans la section « Comment utiliser » pour connaître la structure.
Oui. Convertir entre les tableaux Pillow et NumPy : np.array(img) and Image.fromarray(arr) . Cette intégration est utilisée dans 85 % des pipelines d'images de science des données (Enquêtes Kaggle, 2024). Il permet une combinaison transparente de la vitesse d'E/S de Pillow avec les opérations mathématiques de NumPy.
Pour maximiser l'efficacité de Pillow, suivez ces directives fondées sur des preuves :
En résumé, Pillow est la solution définitive pour le traitement d'images Python pour les tâches qui ne nécessitent pas de transformation vidéo ou 3D en temps réel. Sa combinaison de vitesse (~ 0,2 s par image 12 MP pour les opérations de base), de prise en charge des formats (30 types) et d'API propre en fait la norme de l'industrie pour les scripts d'automatisation, les backends Web et les pipelines de préparation de données.