Module Image de Pillow

Image est le module central de la bibliothèque Pillow, offrant des fonctionnalités de base de traitement d'image.

Voici les méthodes les plus couramment utilisées du module Image et leurs descriptions fonctionnelles :

Méthode Description Exemple
Image.open(fp, mode='r') Ouvrir et identifier un fichier image img = Image.open('image.jpg')
Image.new(mode, size, color=0) Créer une nouvelle image new_img = Image.new('RGB', (500, 500), 'blue')
Image.save(fp, format=None, **params) Enregistrer une image img.save('output.png')
Image.show(title=None, command=None) Afficher une image img.show()
Image.resize(size, resample=None, box=None) Redimensionner une image img.resize((200, 200))
Image.rotate(angle, resample=0, expand=0) Pivoter une image img.rotate(45)
Image.crop(box=None) Recadrer une image img.crop((100, 100, 400, 400))
Image.paste(im, box=None, mask=None) Coller une image img.paste(logo, (50, 50))
Image.convert(mode, matrix=None, dither=None) Convertir le mode d’image img.convert('L')
Image.filter(filter) Appliquer des filtres img.filter(ImageFilter.BLUR)
Image.copy() Copier une image copy = img.copy()
Image.thumbnail(size) Créer une vignette img.thumbnail((100, 100))
Image.getpixel(xy) Obtenir la valeur d’un pixel pixel = img.getpixel((50, 50))
Image.putpixel(xy, value) Définir la valeur d’un pixel img.putpixel((50, 50), (255, 0, 0))
Image.split() Séparer les canaux r, g, b = img.split()
Image.merge(mode, bands) Fusionner les canaux Image.merge('RGB', (r, g, b))

3. Attributs courants

En plus des méthodes, les objets Image possèdent également des attributs importants :

Attribut Description Exemple
format Format d'image print(img.format)
size Taille de l’image (largeur, hauteur) print(img.size)
width Largeur de l'image print(img.width)
height Hauteur de l'image print(img.height)
mode Mode de l'image print(img.mode)
info Dictionnaire des informations relatives à l'image print(img.info)

Exemples d'applications pratiques

Opérations de base sur les images

Exemple

from PIL import Image

# Ouvrir l'image
img = Image.open('example.jpg')

# Afficher les informations de l'image
print(f"Format: {img.format}, Taille: {img.size}, Mode: {img.mode}")

# Redimensionner et enregistrer
resized_img = img.resize((300, 300))
resized_img.save('resized_example.jpg')

# Convertir en niveaux de gris
gray_img = img.convert('L')
gray_img.save('gray_example.jpg')

Traitement d'images

Exemple

from PIL import Image, ImageFilter

img = Image.open('example.jpg')

# Appliquer le filtre de flou
blurred = img.filter(ImageFilter.BLUR)
blurred.save('blurred.jpg')

# Appliquer le filtre de contour
contour = img.filter(ImageFilter.CONTOUR)
contour.save('contour.jpg')

# Faire pivoter l'image
rotated = img.rotate(45, expand=True)
rotated.save('rotated.jpg')

Fonctionnalités avancées

Composition d'images

Exemple

from PIL import Image

# Ouvrir deux images
img1 = Image.open('background.jpg')
img2 = Image.open('foreground.png')

# S'assurer que les deux images ont la même taille
img2 = img2.resize(img1.size)

# Composition d'images (en supposant que foreground.png possède un canal alpha)
composite = Image.alpha_composite(img1.convert('RGBA'), img2.convert('RGBA'))
composite.save('composite.png')

Traitement par lots

Exemple

import os
from PIL import Image

input_dir = 'input_images/'
output_dir = 'output_images/'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

for filename in os.listdir(input_dir):
    if filename.endswith('.jpg'):
        img = Image.open(os.path.join(input_dir, filename))
        # Convertir en niveaux de gris et enregistrer
        gray_img = img.convert('L')
        gray_img.save(os.path.join(output_dir, f"gray_{filename}"))
Autres extensions