Skip to content

Comment utiliser Pillow (PIL : Python Imaging Library)

Pillow est une bibliothèque de traitement d’images dérivée de PIL (Python Image Library). Puisque PIL n’est plus en cours de développement, Pillow est maintenant largement utilisé.

Pillow est la « fourchette PIL amicale » d’Alex Clark et de ses contributeurs. PIL est la bibliothèque d’imagerie Python de Fredrik Lundh et ses contributeurs.
Oreiller — Oreiller (Fourche PIL) 4.2.1 documentation

Bien qu’un traitement d’image avancé (reconnaissance faciale, flux optique, etc.) comme OpenCV ne puisse pas être effectué, un traitement d’image simple tel que le redimensionnement (mise à l’échelle), la rotation et le rognage (découpe partielle) peut être effectué.

Parce que Pillow est plus simple et plus facile à comprendre qu’OpenCV, il est préférable de l’utiliser en fonction de l’objectif.

Cet article décrit le contenu suivant.

  • Installer
  • Utilisation de base
    • Chargement, traitement, sauvegarde des images
    • Dessin
  • Autres exemples de traitement

Consultez le lien suivant pour des articles individuels qui expliquent divers processus tels que le redimensionnement et le rognage.

Installer

L’oreiller peut être installé par pip.

Oreiller et PIL ne peuvent pas coexister. Si vous avez installé les deux, vous devez désinstaller les deux et n’en réinstaller qu’un seul.

Si vous ne savez pas ce qui est installé, vous pouvez le vérifier comme suit :

Désinstaller :

$ pip uninstall

Notez que si vous utilisez Python 3, vous devrez peut-être utiliser pip3 au lieu de pip en fonction de votre environnement.

Consultez l’article suivant pour les opérations de base de pip.

Utilisation de base

Le document officiel est facile à comprendre.

Chargement, traitement, sauvegarde des images

Lire le fichier image. Notez que le nom du package à importer est PIL, pas Pillow.

from PIL import Image, ImageFilter

im = Image.open('data/src/lenna_square.png')

Obtenez des méta-informations telles que le format, la taille (largeur, hauteur), le mode, etc. La taille est exprimée par (largeur, hauteur).

print(im.format, im.size, im.mode)
# PNG (512, 512) RGB

Obtenez la valeur minimale et la valeur maximale de chaque couleur de RVB.

print(im.getextrema())
# ((54, 255), (3, 248), (8, 225))

Récupère la valeur en pixels de la coordonnée spécifiée. L’origine des coordonnées (0, 0) est en haut à gauche.

print(im.getpixel((256, 256)))
# (180, 65, 72)

Par exemple, le traitement de la conversion en niveaux de gris (convert(‘L’)), de la rotation de 90 degrés (rotate(90)) et du flou gaussien (filter()) est effectué.

new_im = im.convert('L').rotate(90).filter(ImageFilter.GaussianBlur())

Affichez les images avec le logiciel par défaut du système d’exploitation.

Enregistrez l’image.

new_im.save('data/dst/lenna_square_pillow.jpg', quality=95)

Lors de l’enregistrement avec save(), les paramètres diffèrent selon l’extension. Voir Format de fichier image pour plus de détails. Dans le cas de jpg, vous pouvez spécifier la qualité avec le paramètre qualité. La valeur par défaut est de 75 pour 1 (le plus bas) à 95 (le plus élevé).

L’image d’origine et l’image après traitement sont les suivantes.

originaltraité

Dessin

Vous pouvez également dessiner des figures.

Utilisez le module ImageDraw . Voir aussi l’article suivant pour plus de détails.

Tout d’abord, créez une image solide. Spécifiez la taille dans le deuxième argument et les couleurs RVB dans le troisième argument.

from PIL import Image, ImageDraw, ImageFont

im = Image.new("RGB", (512, 512), (128, 128, 128))

Spécifiez l’objet Image comme argument et créez un objet Draw.

draw = ImageDraw.Draw(im)

Dessinez une ligne droite, un rectangle et une ellipse.

draw.line((0, im.height, im.width, 0), fill=(255, 0, 0), width=8)
draw.rectangle((100, 100, 200, 200), fill=(0, 255, 0))
draw.ellipse((250, 300, 450, 400), fill=(0, 0, 255))

Dessine le texte avec la police spécifiée.

font = ImageFont.truetype('/Library/Fonts/Arial Bold.ttf', 48)
draw.multiline_text((0, 0), 'Pillow sample', fill=(0, 0, 0), font=font)

Le résultat est le suivant :

oreiller_échantillon

Dans cet exemple, une image solide est générée en premier, mais il est également possible de lire un fichier image et d’y dessiner des figures et du texte.

Autres exemples de traitement

Voici quelques exemples de traitement d’images utilisant Pillow (PIL). Pour plus de détails et un exemple de code, reportez-vous aux articles liés.

Coller une autre image dans l’image

Collez une autre image sur l’image de fond.

En plus des rectangles, il est également possible de découper et de coller n’importe quelle forme, comme un cercle, en utilisant une image de masque.

Oreiller Image.paste résultat cercle masque flou

Composite deux images

Composez deux images de même taille.

Vous pouvez composer selon une image de masque. Une image dégradée peut être utilisée comme masque pour créer une image qui change progressivement.

Gradation composite Python Pillow

Concaténer plusieurs images

Plusieurs images peuvent être disposées verticalement ou horizontalement pour créer une image concaténée.

python oreiller concat tuile redimensionner

Créer une image png transparente

Créez une image png transparente avec un canal alpha.

Cela peut également être masqué dans n’importe quelle forme.

Python Oreiller cercle putalpha

Inversion négative-positive (valeur de pixel inversée)

Une image inversée négative-positive (image avec des valeurs de pixel inversées) est générée.

oreiller inverser lena

Créer des vignettes circulaires ou carrées

Créez des vignettes à partir de grandes images.

Vous pouvez découper le centre, ajouter des marges pour lui donner n’importe quelle taille ou le rendre circulaire. Il est également possible de traiter plusieurs images à la fois.

Vignette d'oreiller carré max
Vignette de l'oreiller, agrandir le carré
Cercle de vignette d'oreiller transparent

Créer un gif animé

Vous pouvez créer une image gif animée ainsi que jpg et png.

oreiller gif