On apprend ici à se servir du module Image, qui permet toutes sortes de manipulations d'images, de la rotation à la modification pixel après pixel, en passant par l'application de filtres.
Avant de donner quelques illustrations des possibilités offertes par le module Image, montrons comment l'importer...
>>> import Image
>>> im=Image.open('carres.png')
>>> im=im.rotate(180)
>>> im.save('carre.jpg','JPEG')
Expliquons ce bout de code :
Pour afficher l'image en cours de traitement
>>> im.show(command = 'eog')
On peut remplacer l'argument par son visionneur préféré.
On suppose que l'image est ouverte. Alors
>>> print im.format, "%dx%d" % im.size, im.mode
affiche :
JPEG 1024x693 RGB,
ce qui correspond au format de l'image, à sa taille, et à son mode (1 pour noir et blanc, L pour niveaux de gris, RGB, etc.)
Un exemple suffit...
>>> from Image import *
>>> toto=new('1',(256,256), color=255)
>>> print toto.getpixel((15,34))
>>> toto.putpixel((128,128),0)
>>> toto.save('letoto.jpg','JPEG')
Pour connaître les méthodes appliquable à un objet Image, et l'utilisation avancée de ce module, aller ici. La lecture, au moins partielle, de ces pages, est vivement conseillée.
Donnons une première illustration des possibilités du module Image : faire une symétrie à une partie d'une image (deuxGraphes.png)
>>> import Image
>>> im=Image.open('deuxGraphes.png')
>>> box = (100, 100, 400, 400)
>>> region = im.crop(box)
>>> region = region.transpose(Image.ROTATE_180)
>>> im.paste(region, box)
>>> im.show()
Expliquons ce code...
Le but est d'obtenir des imagettes (128x128 pixels) de l'ensemble des images passées en argument du programme toto (saisi dans un éditeur de texte) :
#!/usr/bin/python
import os, sys
import Image
for fichierEntree in sys.argv[1 :] :
fichierSortie = os.path.splitext(fichierEntree)[0] + ".thumbnail"
if fichierEntree != fichierSortie :
try :
im = Image.open(fichierEntree)
im.thumbnail((128, 128))
im.save(fichierSortie, "JPEG")
except IOError :
print "Ne peut creer une imagette pour ", fichierEntree
Dans ce qui précède,
Reste à changer les droits d'exécution du fichier, dans un shell :
$ chmod u+x toto
Puis à l'exécuter, en passant en argument les fichiers dont on souhaite obtenir des imagettes...
$ ./toto *