Ce TP ne sera pas noté. Je vous encourage quand même à le faire « sérieusement » et m'envoyer votre TP pour avoir des retours.
Pour ce TP comme pour les suivants, la pièce la plus importante sera un fichier tp0-nom-prenom.py
contenant votre programme. Le seul fait que votre programme fonctionne ne suffit pas pour avoir une bonne note. Les points suivants seront pris en compte :
Certaines questions appellent à une réponse que vous pouvez mettre en commentaire dans votre fichier tp0-nom-prenom.py
. Si vous le souhaitez vraiment, vous pouvez aussi m'envoyer un rapport de TP. Le format de ce rapport sera au choix, mais par ordre de préférence :
.odt
)
La bibliothèque PIL (Python Imaging Library) contient un ensemble de fonction pour manipuler des images. Cette bibliothèque ne fait pas partie des bibliothèques standards de Python ; vous devrez donc l'installer si vous voulez travailler chez vous.
Voici par exemple un morceau de programme Python qui déclare une image, dessine un point au milieu et sauve l'image dans mon_image.png
:
import Image largeur, hauteur = 100,100 im = Image.new("RGB", (largeur, hauteur)) im.putpixel((largeur/2, hauteur/2), (255,255,255)) im.save("mon_image.png")
Voici, avec des détails, ce qu'il se passe :
import Image
: ceci permettra d'accéder à la bibliothèques Image
.
largeur, hauteur = 100,100
: on initialise 2 variables largeur
et hauteur
im = Image.new("RGB", (largeur, hauteur))
: on initialise une variable im
qui dénotera une image. La fonction Image.new
a 2 arguments obligatoires et 1 facultatif :
"RGB"
, voir plus bas
largeur, hauteur
pour la dimension de l'image
im.putpixel((largeur/2, hauteur/2), (255,255,255))
: on dessine un point aux coordonnées (largeur/2, hauteur/2)
en utilisant la couleur (255, 255, 255)
. (Voir plus bas.)
im.save("mon_image.png")
: on sauve l'image finale dans le fichier mon_image.png
Remarques :
(red, green, blue)
, chacune comprise entre 0 et 255. Par exemple, la couleur rouge est représentée par (255, 0, 0)
, noir par (0, 0, 0)
et blanc par (255, 255, 255)
.
Écrivez le corps de la fonction suivante :
def degrade(direction, nom): '''crée une image carrée de taille 256x256 pixel contenant un dégradé de gris (de blanc à noir). - "nom" contient le nom sous lequel l'image sera sauvegardée, - "direction" est une chaîne de caractère : . 'V' pour faire un dégradé vertical . 'H' pour faire un dégradé horizontal . 'D' pour faire un dégradé en diagonal '''
Votre fichier tp0.py
ne devra rien faire tant qu'on n'a pas utilisé cette fonction. Autrement dit, le simple fait de choisir "Run" dans Idle (ou appuyer sur la touche F5) ne devra rien afficher et ne devra pas créer d'image.
Modifiez la fonction précédente pour qu'elle prenne en plus deux arguments optionnels supplémentaires : largeur
et hauteur
. Ces arguments auront 256 comme valeur par defaut.
Attention : il faut que le dégradé parte du noir et aille jusqu'au blanc.
Modifiez a nouveau la fonction précédente pour lui donner deux arguments supplémentaires optionnels : couleur1
et couleur2
.
Chacune de ces couleurs sera données par un triplet (r,g,b)
et leur valeur par defaut seront (0,0,0)
et (255,255,255)
.
Écrivez la fonction
def rectangle(dessin, geom, couleur=(255,255,255)): '''dessine un rectangle horizontal de couleur. - "im" est un objet image (obtenu par "Image.new") - "geom" est un quadruplet (largeur,hauteur,x,y), où "x" et "y" sont les coordonnées du point en haut à gauche du rectangle. '''
Écrivez une fonction disque
similaire.
Bonus : essayez d'écrire une fonction cercle
. Décrivez comment vous vous y prenez et les problèmes que vous rencontrez.
En utilisant le module Random
, écrivez une fonction art
qui génère une image aléatoire contenant des disques et des rectangles. Choisissez des arguments pertinents pour pouvoir choisir les paramètres de votre image finale.
Voici un exemple de ce que vous pourriez obtenir :