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 *