FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 2 septembre 2018 

 
OuvrirSommaireAutres bibliothèquesPil - Python Image Library

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

Créé le 20 juin 2005  par Guigui_

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)

Créé le 20 juin 2005  par Guigui_

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.

 
Sélectionnez

import Image  
im = Image.open("Python.jpg") 
data = list(im.getdata())
Créé le 28 juin 2005  par Guigui_

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

 
Sélectionnez

## Récupération des valeurs de l'image
import Image
im = Image.open("Python.jpg") 
data = list(im.getdata())
## Reconstruction de l'image
imNew=Image.new(im.mode ,im.size) 
imNew.putdata(data) 
Créé le 28 juin 2005  par Guigui_

La fonction im.split() renvoit une séquence des 3 composantes RGB de l'image

 
Sélectionnez

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')
Créé le 20 juin 2005  par Guigui_

La fonction Image.merge(mode, bands) crée une image à partir des images bands selon le mode mode

 
Sélectionnez

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
Créé le 20 juin 2005  par Guigui_

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.
Créé le 31 octobre 2006  par Guigui_

Lien : Comment importer des modules/fonctions/fichiers ?

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005-2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.