π
<-
Chat plein-écran
[^]

Format ti_picture

TI's micropython + modules

Format ti_picture

Message non lude Maxam » 17 Sep 2020, 19:35

Hello,

Je cherche à comprendre le format des images de la bib ti_picture, mais je n'y comprend rien, ou alors ça fait trop longtemps que je n'ai pas jouer avec des pixels :)

Voila un petit bout de code pour tester, c'est censé afficher deux lignes verticales, je vous laisse admirer par vous même

Code: Tout sélectionner
def setPixel(img,x,y,color):
    pixel=(y*318)+(x*3)
    img[pixel]=color[2]
    img[pixel+1]=color[1]
    img[pixel+2]=color[0]
def test():
  clear()
  img=newImage(318,212,(0,0,0))
  color=(255,255,255)
  for y in range(0,212):
    setPixel(img,6,y,color)
    setPixel(img,8,y,color)
  showImage(img,318,212,0,0)
Avatar de l’utilisateur
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 39.8%
 
Messages: 36
Inscription: 27 Aoû 2020, 07:58
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Format ti_picture

Message non lude critor » 17 Sep 2020, 20:02

Avec un newImage(318, 212, ...) on obtient une liste de 202248 éléments, soit 318*212*3.
Donc le format semblerait évident, du RGB-888.

Après je constate comme toi, impossible d'obtenir un affichage correct avec showImage(...). Sur le logiciel ça ne m'affiche même rien du tout.

Peut-être pour ça aussi que le module ti_picture n'est pas (encore ?...) au menu, si il ne marche pas...
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.4%
 
Messages: 41497
Images: 14640
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Format ti_picture

Message non lude Maxam » 17 Sep 2020, 20:08

critor a écrit:Avec un newImage(318, 212, ...) on obtient une liste de 202248 éléments, soit 318*212*3.
Donc le format semblerait évident, du RGB-888.

Oui, j'en ai tenu compte dans mon setPixel et d'après mes essais c'est bien du 888.

critor a écrit:Après je constate comme toi, impossible d'obtenir un affichage correct avec showImage(...). Sur le logiciel ça ne m'affiche même rien du tout.
Peut-être pour ça aussi que le module ti_picture n'est pas (encore ?...) au menu, si il ne marche pas...


Il faut faire un clear() (de ti_draw) avant sinon la machine ne passe pas en mode graphique. Ensuite showImage affiche (dans le logiciel) mais c'est n'importe quoi.
Avatar de l’utilisateur
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 39.8%
 
Messages: 36
Inscription: 27 Aoû 2020, 07:58
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Format ti_picture

Message non lude Ti64CLi++ » 17 Sep 2020, 20:10

Le module ti_picture marche de la même manière que ti_image non ?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Format ti_picture

Message non lude critor » 17 Sep 2020, 20:18

@Ti64CLi++ Absolument pas.

Maxam a écrit:Il faut faire un clear() (de ti_draw) avant sinon la machine ne passe pas en mode graphique. Ensuite showImage affiche (dans le logiciel) mais c'est n'importe quoi.

Merci pour la précision. Alors dans ce cas ça me semble marcher parfaitement : :)
Image

C'est simplement ta fonction setPixel() qui est à corriger, 1ère ligne :
Code: Tout sélectionner
def setPixel(img,x,y,color):
    pixel=(y*318+x)*3
    img[pixel]=color[2]
    img[pixel+1]=color[1]
    img[pixel+2]=color[0]
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.4%
 
Messages: 41497
Images: 14640
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Format ti_picture

Message non lude Ti64CLi++ » 17 Sep 2020, 20:23

La fonction showImage marche comme tel : showImage(var_img, w, h, x, y)

Ici, les paramètres w et h doivent respectivement valoir la largeur et la hauteur de votre image, donc si vous créez une image de dimension 10x10, il faudra mettre 10, 10.
Ensuite, les paramètres x et y sont bien évidemment la position.

Voilà un code qui marche par exemple :
Code: Tout sélectionner
from ti_draw import clear
from ti_picture import newImage, showImage

clear()

img = newImage(50, 50, (255, 0, 0))
showImage(img, 50, 50, 0, 0)

for i in range(len(img) / 3):
  img[3 * i] = 0
  img[3 * i + 2] = 255

showImage(img, 50, 50, 70, 80)


Après rien n'empêche de mettre des valeurs inférieures à la taille pour w et h, l'image sera juste rognée ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Format ti_picture

Message non lude Maxam » 17 Sep 2020, 20:23

critor a écrit:@Ti64CLi++ Absolument pas.

C'est simplement ta fonction setPixel() qui est à corriger, 1ère ligne :


Oui mais non, les lignes devraient être blanches :)
Avatar de l’utilisateur
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 39.8%
 
Messages: 36
Inscription: 27 Aoû 2020, 07:58
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Format ti_picture

Message non lude critor » 17 Sep 2020, 20:25

@Ti64Cli++
Je ne comprends pas où tu veux en venir. Tu décris exactement ce qui est déjà dans le code initial depuis le début...

@Maxam
J'ai juste testé avec un exemple à moi, et ça donne bien exactement ce que j'ai codé.
Code: Tout sélectionner
def test():
  clear()
  img=newImage(318,212,(0,0,0))
  for y in range(0,212):
    setPixel(img,6,y,(255,0,0))
    setPixel(img,8,y,(0,255,0))
    setPixel(img,10,y,(0,0,255))
  showImage(img,318,212,0,0)
Retente avec la correction que je t'ai donnée et ça marchera. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.4%
 
Messages: 41497
Images: 14640
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Format ti_picture

Message non lude Maxam » 17 Sep 2020, 20:28

Ti64CLi++ a écrit:La fonction showImage marche comme tel : showImage(var_img, w, h, x, y)


Oui, c'est bien que ce j'utilise:

Code: Tout sélectionner
img=newImage(318,212,(0,0,0))
showImage(img,318,212,0,0)
Avatar de l’utilisateur
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 39.8%
 
Messages: 36
Inscription: 27 Aoû 2020, 07:58
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Format ti_picture

Message non lude Ti64CLi++ » 17 Sep 2020, 20:31

Désolé, j'avais mal compris le problème :?

Comme dit critor, pour pallier à ton problème, il suffit de remplacer pixel = (y*318)+(x*3) par pixel = (y*318+x)*3 ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Suivante

Retourner vers Python

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1475 utilisateurs:
>1430 invités
>41 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)