4186
Commentaire:
|
4178
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Le but de ce sujet de TP est d’introduire l’utilisation de modules externes en Python, | Le but de ce sujet de TP est d’introduire l’utilisation de modules en Python, |
Ligne 89: | Ligne 89: |
Explorer les méthodes de dessin disponible (`help(dessin)`). | Explorez les méthodes de dessin disponible (`help(dessin)`). |
Le but de ce sujet de TP est d’introduire l’utilisation de modules en Python, à partir de l’exemple de la bibliothèque Pillow : celle-ci permet de manipuler facilement des fichiers d’images dans des formats variés. La dernière partie du TP fait le lien avec les algorithmes de tris vus en cours ce matin.
Préambule
Pour l’installation éventuelle de Pillow, des instructions sont disponibles sur une page séparée.
Avant de commencer, je vous suggère d’aller piocher une image de test pas trop grosse (disons au maximum 1024 pixels dans chaque dimension). À défaut en voilà deux, obtenues à partir d’une photo mise à disposition par Hans Stieglitz sur les Wikimedia commons, et soumise à la licence CC-BY-SA 3.0 :
Utilisation du module Pillow
Ouverture et conversion de fichiers
Le bout de code suivant convertit le fichier tigre.jpg (au format JPEG) en tigre.png (au format PNG) :
Essayez chez vous.
Première difficulté : comment expliquer à Python où aller chercher les fichiers ?
Trouvez dans votre interpréteur la liste des chemins de recherche.
Pour la suite :
- méthode sale mais rapide : mettez vos fichiers d’images là où Python regarde déjà ;
méthode plus propre : ajouter un chemin à la variable sys.path (comment ?).
Obtenir des informations sur les objets Python
Dans un interpréteur, essayez successivement :
Questions :
que se passe-t-il si on oublie la première ligne ? que fait help(PIL.Image) ?
comment interprétez-vous l’attribut im.mode ?
- comment obtenir la valeur d’un pixel ? quel est la forme du résultat pour une image en couleur ? en niveaux de gris ?
- comment modifier la valeur d’un pixel ?
- comment convertir facilement une image couleur en niveaux de gris ?
Dessin basique
Écrivez une fonction croix(im) qui dessine une petite croix au centre de l’image im.
Testez de la manière suivante :
sauvez votre script par exemple sous le nom croix.py
- dans un interpréteur, tapez les lignes suivantes :
Ajoutez des arguments optionnels à la fonction pour permettre à l’utilisateur de choisir la taille et la couleur du motif. Ça devrait commencer par quelque chose comme :
Dessin plus avancé
Essayez les lignes suivantes :
Explorez les méthodes de dessin disponible (help(dessin)).
Voir comment on trie
Prélude
Écrivez une fonction valeurs(nombre) qui génère une liste de valeurs aléatoires entre 0 et 255.
Vous aurez besoin de la fonction randint du module random.
Trier avec des bulles
Implémentez le tri à bulles vu ce matin.
Écrivez ensuite une fonction voir_bulles(liste) qui partant d’une liste de n valeurs à trier, construit une image de largeur n : chaque ligne représente une étape de l’algorithme de tri, en associant par exemple à chaque valeur x un pixel (x,255-x,0).
Combien de lignes faut-il prévoir ?