Découverte format image Python IM8C TI-83 Premium CE 5.5
Posted: 02 Jun 2020, 10:14
Dans sa mise à jour 5.5.1 gratuite, Texas Instruments rajoute de formidables possibilités historiques à ta TI-83 Premium CE :
Python 5.5 offre de nouveaux modules intégrés pour tes scripts Python :
- mise à jour en 5.5 de l'application SciTools
- mise à jour en 5.5 de l'application Periodic
- mise à jour en 5.5 de l'application Python (TI-83 Premium CE Édition Python uniquement)
Python 5.5 offre de nouveaux modules intégrés pour tes scripts Python :
- time, certes déjà présent mais maintenant listé au menu et donc officiel
- ti_system, avec diverses possibilités :
- détection des simples pressions de touches clavier, y compris avec un clavier USB externe !
- affichage dans la console à la ligne que tu veux
- exportation de listes de nombres du contexte Python vers l'environnement de la calculatrice
- importation dans le contexte Python de listes existant dans l'environnement de la calculatrice vers
- et donc plus généralement un début d'intégration du Python à l'environnement mathématique de la calculatrice; plus besoin de traiter les tâches numériques à part, l'application Python 5.5 va enfin pouvoir servir s'articulier naturellement au sein de la résolution de problèmes et tâches complexes !
- ti_plotlib, une bibliothèque graphique pour tracer dans un repère othogonal, conformément aux programmes de Mathématiques et Physique-Chimie, comparable à matplotl chez Casio ou encore matplotlib.pyplot, et gérant ici les diagrammes suivants :
- nuage de points
- diagramme en ligne brisée
- droite de régression linéaire
- ti_graphics pour contrôler directement les pixels de l'écran, comparable à kandinsky chez NumWorks ou encore casioplot
- ti_hub, pour les projets d'objects connectés à l'aide de l'interface TI-Innovator Hub
- ti_rover, pour les projets de robotique à l'aide du TI-Innovator Rover
Dans notre exploration de ti_graphics, nous avions découvert une fonction a priori hautement intéressante pour afficher des images, drawImage().
Nous n'avions hélas pas réussi à la faire fonctionner correctement.
Nous découvrions par la suite que les images affichables en question était des variables d'application (fichiers .8xv) à charger en mémoire de la calculatrice.
C'est très malin, drawImage() va donc chercher ses données en externe ce qui évite de consommer du tas/heap Python, surtout que les images pouvant rentrer dans 17K n'atteindraient même pas les dimensions timbre poste.
Nous n'avions hélas pas réussi à la faire fonctionner correctement.
Nous découvrions par la suite que les images affichables en question était des variables d'application (fichiers .8xv) à charger en mémoire de la calculatrice.
C'est très malin, drawImage() va donc chercher ses données en externe ce qui évite de consommer du tas/heap Python, surtout que les images pouvant rentrer dans 17K n'atteindraient même pas les dimensions timbre poste.
Aujourd'hui nous disposons enfin d'images compatibles au bon format .8xv !
Voici donc ci-contre le couple mythique de super-héros Tristan et Iseult :
Ce qui est exceptionnel c'est la vitesse de tracé, à peine une fraction de seconde pour l'affichage de ces deux énormes images !
Peut-être matière à réutiliser cela pour l'affichage de sprites au sein de futurs superbes jeux en Python pour ta formidable TI-83 Premium CE Edition Python !
Et également de quoi aborder facilement le traitement d'image en SNT puis NSI !
Voici donc ci-contre le couple mythique de super-héros Tristan et Iseult :
- Code: Select all
import ti_graphics as scr
from ti_system import disp_wait
scr.drawImage('BOY_200', 15, 30)
scr.drawImage('GIRL_200', 125, 30)
scr.setColor((255, 0, 0))
scr.drawString('T', 155, 122)
scr.setColor((0, 255, 0))
scr.drawString('I', 175, 117)
Ce qui est exceptionnel c'est la vitesse de tracé, à peine une fraction de seconde pour l'affichage de ces deux énormes images !
Peut-être matière à réutiliser cela pour l'affichage de sprites au sein de futurs superbes jeux en Python pour ta formidable TI-83 Premium CE Edition Python !
Et également de quoi aborder facilement le traitement d'image en SNT puis NSI !
Autre gros avantage, la fonction drawImage() marche aussi bien avec une image placée en mémoire principale (RAM) qu'en mémoire d'archive (Flash).
Tant mieux, de quoi économiser la RAM de 150K déjà lourdement sollicitée par tes scripts et modules complémentaires Python.
En passant notons la taille de l'image BOY_200, 10,830 Ko pour seulement 94×200=18800 pixels.
Nettement moins de 2 octets par pixel alors que nous sommes ici sur un écran 16 bits, et même moins d'1 octet par pixel, il y a clairement une compression à l'oeuvre.
L'exploration du fichier .8xv associé à l'éditeur hexadécimal nous révèle un commentaire intéressant en entête, Created by img2appvar 1.0.0.
Malheureusement nous ne disposons pas de l'outil img2appvar, et ignorons même totalement si il sera publié.
Un identifiant sur 4 octets IM8C débute de plus la partie données, et est donc à rajouter à la liste des types officiels de variables d'application que Texas Instruments est en train d'étoffer :
Quelques altérations d'octets nous permettent d'en apprendre un peu plus à son sujet :
Bref, nous avons maintenant a priori tout ce qu'il faut pour te concevoir un convertisseur d'images pour tes futures créations. A bientôt...
Tant mieux, de quoi économiser la RAM de 150K déjà lourdement sollicitée par tes scripts et modules complémentaires Python.
En passant notons la taille de l'image BOY_200, 10,830 Ko pour seulement 94×200=18800 pixels.
Nettement moins de 2 octets par pixel alors que nous sommes ici sur un écran 16 bits, et même moins d'1 octet par pixel, il y a clairement une compression à l'oeuvre.
L'exploration du fichier .8xv associé à l'éditeur hexadécimal nous révèle un commentaire intéressant en entête, Created by img2appvar 1.0.0.
Malheureusement nous ne disposons pas de l'outil img2appvar, et ignorons même totalement si il sera publié.
Un identifiant sur 4 octets IM8C débute de plus la partie données, et est donc à rajouter à la liste des types officiels de variables d'application que Texas Instruments est en train d'étoffer :
- PYCD : script Python
- PYMP : module complémentaire Python
- IM8C : image Python
Quelques altérations d'octets nous permettent d'en apprendre un peu plus à son sujet :
- il utilise une palette avec au maximum 256 couleurs, chacune précisée au format RGB-565
- les données image sont par la suite compressées au format RLE
Bref, nous avons maintenant a priori tout ce qu'il faut pour te concevoir un convertisseur d'images pour tes futures créations. A bientôt...
Téléchargement : OS + applis TI-83 Premium CE 5.5.1