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')
# 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')
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')
# 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}"))
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}"))