Pour bien utiliser le module PIL, il faut d'abord en comprendre son vocabulaire.
Les images monochromes, ou en niveau de gris, ont une seule bande, les images RGB en ont 3, et les images CMYK, RGBA en ont 4, etc.
Le mode d'une image décrit de quelle manière sont représentés ses couleurs. Chaque mode est symbolisé par une chaîne de caractères :
Mode | Bandes | description |
"1" | 1 | Noir et blanc (monochrome), un bit par pixel. |
"L" | 1 | Niveaux de gris, un octet par pixel. |
"P" | 1 | Utilisation d'une palette : un octet par pixel, avec une palette de la classe ImagePalette faisant la traduction pixels->couleurs. Mode expérimental. |
"RGB" | 3 | Mode RVB pur (Rouge-Vert-Bleu), trois octets par pixel. |
"RGBA" | 4 | Mode RVB pur, avec une bande de transparence : quatre octets par pixel. Le canal "alpha" A varie de 0 (transparent) à 255 (opaque). |
"CMYK" | 4 | Cyan-Magenta-Jaune-Noir, quatre octets par pixel. |
"YCbCr" | 3 | Format vidéo de couleur. Trois octets par pixel. |
"I" | 1 | Pixels = entiers codés sur 32 bits. |
"F" | 1 | Pixels = flotants codés sur 32 bits. |
La taille d'un objet est le couple (hauteur,largeur) de cet objet, en pixels.
Les coordonnées d'un pixel sont celles de son point supérieur gauche. L'axe des x est orienté vers la droite, celui des y vers le bas.
Les angles sont donnés en degrés. L'axe polaire est l'axe des abscisses, et le sens est trigonométrique.
Une bbox (bounding box) est une partie rectangulaire de l'image. Elle est définie par un quadruplet (x0, y0, x1, y1), où (x0, y0) est le coin supérieur gauche dudit rectangle, et (x1, y1) en est son coin inférieur droit.
En général, le point (x0, y0) est inclus, mais pas (x1, y1).
On peut fixer la couleur d'un pixel de différentes manières :
>>> import Image as im
>>> dd=im.new('RGB',(50,50))
>>> dd.putpixel((5,5),(0,0,255))
>>> dd.show()
>>> dd=im.new('RGB',(50,50),color='#ffff00')
>>> dd.show()
>>> dd=im.new('RGB',(50,50),color='rgb(90,50,50)')
>>> dd.show()
>>> dd=im.new('RGB',(50,50),color="rgb(85%,85%,85%)")
>>> dd.show()
>>> dd=im.new('RGB',(50,50),color="hsl(180,100%,50%)")
>>> dd=im.new('RGB',(50,50),color='coral')
>>> dd.show()
Ces différentes définitions de couleur sont applicables à toute méthode ayant un attribut de la forme color : c'est le cas de la méthode paste, pas de putpixel
>>> dd.paste((75,25,25),box=(10,10,20,20)) # ok >>> dd.putpixel((35,35),(75,25,25)) # Là aussi >>> dd.paste("rgb(75%,25%,25%)",box=(10,10,20,20)) # Pas de soucis >>> dd.putpixel((35,35),"rgb(75%,25%,25%)") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.5/site-packages/PIL/Image.py", line 1234, in putpixel return self.im.putpixel(xy, value) SystemError: new style getargs format but argument is not a tuple
Certaines opérations qui réduisent le nombre de pixels, tels que la création d'imagettes (thumbnail), peuvent utiliser différents filtres pour calculer les valeurs des nouveaux pixels.
Ces filtres incluent :