Dans le cadre du
concours de démo graphiques Python de
Planète Casio,
Kikoodx a développé un script d'affichage d'image pour
Casio Graph 90+E.
Nous avons vu
à cette occasion qu'il était hélas impossible de le faire fonctionner tel quel sur
TI-83 Premium CE Edition Python.
L'image fait 384×192 pixels et
Kikoodx l'inclut astucieusement dans le code dans une version indexée, faisant appel à une palette de 256 couleurs optimisée pour cette image.
Première contrainte, les scripts qui doivent être chargés occupent 196 Kio. Or si ta
TI-83 Premium CE Edition Python dispose bien d'un espace de stockage pris sur la mémoire
Flash de
3 Mio (dit mémoire d'archive) de capacité, l'application tout script y étant placé sera ignoré par l'application
Python. Les scripts que tu souhaites pouvoir utiliser doivent obligatoirement être placés dans l'espace de stockage bien plus petit pris sur la mémoire
RAM, avec dans les 150K disponibles à vide, ce n'est pas assez.
Mais l'image étant ici plus large que l'écran avec 384 pixels, on pourrait imaginer que ça rentre après l'avoir tronquée d'un petit quart de sa taille, du genre dans les 300×192 pixels ? Et ben non, même si tu arrives à réduire la taille des scripts à 150K tu n'es pas sorti(e) de l'auberge. Car nous venons de voir que le coprocesseur
Python de ta machine ne peut importer simultanément qu'un maximum de
50K scripts.
C'est donc de trois quarts qu'il faudrait réduire notre image, elle ne serait plus du tout plein écran. Mais attend non même pas, puisque nous avions vu
précédemment que le
heap (tas) accueillant les valeurs des objets
Python à l'exécution ne faisait plus que moins de
17.5K.
17.5K qui devraient donc accueillir à l'exécution non seulement l'objet image, mais également toutes les fonctions d'affichage liées.
Non décidément, la méthode d'inclure les données d'une image à afficher dans un script
Python n'est pas envisageable sur
TI-83 Premium CE Edition Python. A moins qu'il ne s'agisse que de toutes petites images du genre icônes, et très peu nombreuses.
Mais alors comment faire avec une classe équipée en
TI-83 Premium CE Edition Python pour l'enseignement de
SNT dès la
Seconde, et notamment toute sa partie sur la photograhique numérique et le traitement d'image en
Python ?
Mais c'est que
Texas Instruments a pensé à tout, et semble concevoir sa très prochaine mise à jour
5.5 sur-mesure pour le lycée français.
Dans notre
exploration récente de la bibliothèque secrète
ti_graphics, nous découvrions 3 fonctions dédiées aux images :
pushImage(x, y, w, h)
popImage()
drawImage()
pushImage(x, y, w, h)
définit une image de dimensions
w×h pixels qui sera ensuite affichée par
popImage()
avec comme coin supérieur gauche le pixel de coordonnées
(x,y).
Nous n'en avons toutefois pas saisi tout le fonctionnement, puisque n'arrivant à afficher que du bruit mémoire.
Voici maintenant enfin les spécifications de la mystérieuse 3
ème fonction d'image
drawImage('imgname', x, y)
.
L'appel
drawImage('imgname', x, y)
va chercher dans les variables d'application de la calculatrice, c'est-à-dire en externe hors de l'environnement
Python, une image correspondant au nom fourni, et l'affiche avec le pixel de coordonnées
(x,y) comme coin supérieur gauche.
Exemple ci-contre de ce que l'on obtient avec l'appel ci-dessous après avoir chargé le fichier
GIRL_150.8xv :
ti_plotlib.gr.drawImage('GIRL_150', 100, 50)
Cet affichage est ainsi effectué en dehors de l'environnement
Python, il n'y a aucune création d'objet, aucune consommation de ressource !
Il n'en reste pas moins possible de poursuivre le traitement d'image en
Python, avec des transformations répondant au programme de
SNT de
Seconde.
Une simple boucle de
getPixel() /
setPixel() te permettra par exemple ensuite de réaliser nombre de choses pertinentes en
SNT, sans création de gros objets
Python et donc sans problème d'épuisement du tas
Python :
- symétrie axiale
- symétrie centrale
- inversion de couleurs
- extraction de composantes de couleurs
- comparaison de divers algorithmes de conversion en niveaux de gris
- ...
Quant aux images justement, il est prévu de nous mettre à disposition une banque d'images téléchargeables déjà préconverties au bon format compatible avec le
Python de ta calculatrice.
Nous ignorons à ce jour si il sera possible de convertir ses propres images, ou si les fichiers au format en question seront protégés par une possible signature numérique.
Décidément
Texas Instruments a le soucis méticuleux du détail, la moindre ligne des programmes scolaires étant prise en compte; nous n'en revenons toujours pas du travail colossal effectué sur cette mise à jour
5.5 !