FAQ Python
FAQ PythonConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021
- Qu'est-ce que Pil ?
- Où trouver de l'aide pour Pil ?
- Comment récupérer dans une liste les valeurs des pixels d'une image ?
- Comment créer une image à partir d'une liste de valeurs de pixels ?
- Comment décomposer une image couleur en ses 3 composantes RGB ?
- Comment recomposer une image couleur à partir de ses 3 composantes RGB ?
- Pourquoi j'obtiens l'erreur "AttributeError: class Image has no attribute ..." ?
La bibliothèque Pil (Python Imaging Library) ajoute des possibilités de manipulation d'images de tout format avec la présence de quelques fonctions de traitement d'images
Vous pouvez consulter la documentation officielle de Pil qui est relativement complète (version html et pdf en anglais d'un tutoriel avec présentation et exemples de la majorité des fonctions)
La fonction Image.open(path) permet d'ouvrir une image de tout format (compatible avec la bibliothèque Pil)
la fonction im.getdata() retourne un objet-séquence contenant les valeurs des pixels de l'image. Cependant il n'est lisible
que par Pil. La fonction list permet ensuite de récupérer cette séquence sous un format lisible par l'utilisateur. On récupère
alors une liste de tuples à 3 compoantes si l'image est couleur, une liste simple sinon.
la fonction Image.New(mode, size) permet de créer une nouvelle image où mode ("L" ou "RGB")
définit si l'image sera couleur ou en niveau de gris et size est un tuple (NbColonnes, NbLignes).
la fonction im.putdata(data) remplit l'image avec la séquence de valeurs data
La fonction im.split() renvoit une séquence des 3 composantes RGB de l'image
import
Image
img =
Image.open(
"Python.jpg"
) ## Ouverture de l'image Python.jpg
r,g,b =
img.split
(
) ## Récupération des différentes composantes de l'image
r.save
(
'r.jpg'
) ## Sauvegarde des différents images composantes
g.save
(
'g.jpg'
)
b.save
(
'b.jpg'
)
La fonction Image.merge(mode, bands) crée une image à partir des images bands selon le mode mode
import
Image
img =
Image.open(
"Python.jpg"
) ## Ouverture de l'image Python.jpg
comp =
img.split
(
) ## Décomposition de l'image
imgnew =
Image.merge
(
'RGB'
,comp) ## Recomposition de l'image
imgnew.save
(
"PythonNew.jpg"
) ## Sauvegarde de l'image décomposée puis recomposée
La bibliothèque Pil fournit plusieurs modules dont le module standart qui se nomme Image. Classiquement, on l'importe par la commande Import Image. On accède ensuite aux fonctions de ce module par la forme Image.UneFonction. Il arrive parfois que survienne alors l'erreur AttributeError: class Image has no attribute .... La cause peut être multiple:
- Tout d'abord, vous avez un de votre propre module qui se nomme également Image. Ainsi, au lieu d'importer le module de Pil, vous importez finalement votre propre module qui ne contient pas les fonctions du module Image de Pil.
- D'autres bibliothèques que vous utilisez peuvent également contenir un module Image. Si vous les importez de la manière
from ... import *, il se peut donc que vous importiez un module Image qui écrasera celui du module Pil (ou inversement, en fonction
de la position des imports). C'est une des raisons qui font qu'il est déconseillé d'utilisez ce schéma pour l'importation.
Par exemple, le module Tkinter contient un module Image et de ce fait l'instruction from Tkinter import * écrasera le module Image de Pil que vous auriez pu importer auparavant. C'est pour cela qu'il est préférable pour Tkinter d'importer de la manière import Tkinter as Tk.