Images en quadrichrome sur vg5000

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

excusez moi de mon français tout pourri je cherche désespérément à lire le contenu d'un fichier bmp mais la combinaison des couleurs est vraiment pas évidente. Je pensais qu'ils étaient bêtement sur 4 octets " alpha,r,v,b ". voici l'image " bmp " à décoder si quelqu'un veut bien. image 9x15pixels.
blanc bleu rouge 9x15pixels.png
blanc bleu rouge 9x15pixels.png (526 octets) Consulté 4084 fois
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17404
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Images en quadrichrome sur vg5000

Message par Daniel »

Le fichier que tu as inséré est au format PNG. Il n'est pas facile de retrouver les couleurs dans un format compressé.

bmp.png
bmp.png (39.55 Kio) Consulté 4071 fois


J'ai pris la même image et je l'ai sauvée en bmp 24 bits par pixel, c'est beaucoup plus facile à comprendre :

test.png
test.png (22.46 Kio) Consulté 4071 fois

La description du format BMP est ici : https://en.wikipedia.org/wiki/BMP_file_format
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 829
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Images en quadrichrome sur vg5000

Message par Dominique »

Perso voici ce que je pense :
Tu as une variable longue sous la forme RVB : Rouge(0-FF)Vert(0-FF)Bleue(0-FF)
Suppose que cette variable longue du pixel xa ya soit dans Couleur_finale (xa, ya)
(Obtenue par GetPixel (xa,ya))


En décimal tu fais :

Code : Tout sélectionner

Rouge = ((Couleur_Finale(xa, ya) And 16711680)) / 256 / 256 // (16711680 = $FF0000)
Verte = ((Couleur_Finale(xa, ya) And 65280)) / 256   // 65280 = $00FF00
Bleue = (Couleur_Finale(xa, ya) And 255)  // 255 = $FF

Mais SAM et Daniel l'avaient déjà dit -
De plus Il fallait prendre un fichier BMP comme on te l'avait proposé depuis le 1 décembre.
Daniel
Messages : 17404
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Images en quadrichrome sur vg5000

Message par Daniel »

Exemple :
- Dans le fichier .bmp que j'ai listé, l'image commence à l'octet 0x36.
- L'image est codée à partir du début de la dernière ligne, les lignes sont triées de la dernière vers la première.

La dernière ligne de l'image est définie par :
0036: FFFFFF FFFFFF FFFFFF = trois pixels blancs
003F: 0000FF 0000FF 0000FF = trois pixels bleus
0048: FF0000 FF0000 FF0000 = trois pixels rouges

La même séquence est répétée pour les quatorze lignes précédentes.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 829
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Images en quadrichrome sur vg5000

Message par Dominique »

En éditant l'image avec un programme comme le Photofiltre on retrouve bien les Vert Rouge Bleu
Drapeau.jpg
Drapeau.jpg (99.41 Kio) Consulté 4043 fois
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

voici mon code.Si vous avez des suggestions pour me mettre sur la bonne voie je suis tout ouî. :?



Code : Tout sélectionner

 file$=RequestFile$("choose a wav file","bmp",False)  
 
  Graphics 800,600,32,2  

   Dim num(100000)    

  fil=ReadFile(file$)        

   For i=1 To 2500 

   num(i)=ReadInt(fil)    

   Next       

   CloseFile(dataout)

   For i=36 To 600 Step 1: v=v+1

  y=num(i) 
 
  Line 0,250,0,0

  Color 255,255,255 


red= Int y /(256*256*256) Mod 256
 green=  Int  y /(256*256) Mod 256
  bleu= Int y/256  Mod 256 
 
 If bleu=-1 Then bleu=255
 If green=-1 Then green=255
 If red=-1 Then red=255

Text x,u,"alpha"+Str$(y)
 Text x+160,u," red"+  red: 
  Text x+240,u,"green"+  green
  Text x+320,u,"bleu"+  bleu 
   Text x+400,u,"$"+  Hex$ (y)

  Text x+500,u,"?"+v


    u=u+10

If  u>600 Then u=0:Delay 100000:End
   Flip  

    Next 
  
Delay 10000



Voilou ce qu'il me sort
Capture d’écran de 2020-12-04 14-14-43.png
Capture d’écran de 2020-12-04 14-14-43.png (107.01 Kio) Consulté 4040 fois
Pièces jointes
Capture d’écran de 2020-12-04 14-22-41.png
Capture d’écran de 2020-12-04 14-22-41.png (303.51 Kio) Consulté 4039 fois
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17404
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Images en quadrichrome sur vg5000

Message par Daniel »

La difficulté est de comprendre ce que tu veux obtenir, à partir de quoi, avec quels outils.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

Daniel, je souhaiterai obtenir à l'aide du logiciel blitzbasic les valeurs sur un octet des composantes RVB d'un fichier bmp et les utiliser par la suite pour redessiner l'image avec des setets du vg5000.
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17404
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Images en quadrichrome sur vg5000

Message par Daniel »

OK, je comprends. Il faut savoir programmer en blitzbasic. Je ne pourrai pas t'aider.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7963
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Images en quadrichrome sur vg5000

Message par __sam__ »

Humm il me vient une idée.. Tu nous a dis les pixels sont sur 4 octets.. J'en ai déduit que l'alpha est en MSB. Mais en vrai si ca se trouve tu n'as pas de composante alpha. Du coup tes pixels ne font que 3 octets et pas 4, ce qui te rends le décodage incompréhensible!

Commence d'abord par lire le fichier octet par octet, et tu va peut-être découvir que les octets s'enchainent rouge, vert, bleu, rouge, vert,bleu,... pour la 1ère ligne (celle en bas de l'image), puis pareil pour la ligne au dessus, etc.

Je ne connais pas non plus ce basic, mais si ReadInt() te lit un entier 32bits, je ne serais pas surpris qu'il y ait un ReadByte() lise un entier 8 bits, un octet.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

Capture d’écran de 2020-12-04 18-32-51.png
Capture d’écran de 2020-12-04 18-32-51.png (175.01 Kio) Consulté 4012 fois
Capture d’écran de 2020-12-04 18-32-51.png
Capture d’écran de 2020-12-04 18-32-51.png (175.01 Kio) Consulté 4012 fois

lequel choisir et comment ?
Pièces jointes
Capture d’écran de 2020-12-04 18-31-00.png
Capture d’écran de 2020-12-04 18-31-00.png (145.53 Kio) Consulté 4012 fois
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
hlide
Messages : 3495
Inscription : 29 nov. 2017 10:23

Re: Images en quadrichrome sur vg5000

Message par hlide »

3 x ReadByte pour lire chaque composant de couleur dans l'ordre little-endian, donc BLEU, VERT puis ROUGE.

Genre :

Code : Tout sélectionner

B% = ReadByte(fichier_BMP);
V% = ReadByte(fichier_BMP);
R% = ReadByte(fichier_BMP);
Daniel
Messages : 17404
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Images en quadrichrome sur vg5000

Message par Daniel »

Et il faut commencer au début de l'image dans le fichier .bmp. L'offset est donné par l'octet à l'adresse 0x0a de l'en-tête du fichier.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

c'est pas gagné
Capture d’écran de 2020-12-05 17-46-54.png
Capture d’écran de 2020-12-05 17-46-54.png (59.75 Kio) Consulté 3970 fois

Code : Tout sélectionner

 
 file$=requestFile ("fichier image","bmp",false) 
 
  Graphics 800,600,32,2  

   Dim num(100000)    

  fil=ReadByte (file$)        

   For i=1 To 2500 

   num(i)=ReadInt(fil)    

   Next       

   CloseFile(dataout)

   For i=36 To 600 Step 3: v=v+1

  y=num(i) 
 
  Line 0,250,0,0

  Color 255,255,255 


red= Int y /(256*256*256) Mod 256
 green=  Int  y /(256*256) Mod 256
  bleu= Int y/256  Mod 256 
 
 If bleu=-1 Then bleu=255
 If green=-1 Then green=255
 If red=-1 Then red=255

  
 file$=OpenFile ("c/rouge.bmp") 
 
  Graphics 800,600,32,2  

   Dim num(100000)    

  fil=ReadByte (file$)        

   For i=1 To 2500 

   num(i)=ReadInt(fil)    

   Next       

   CloseFile(dataout)

   For i=36 To 600 Step 3: v=v+1

  y=num(i) 
 
  Line 0,250,0,0

  Color 255,255,255 


red= Int y /(256*256*256) Mod 256
 green=  Int  y /(256*256) Mod 256
  bleu= Int y/256  Mod 256 
 
 If bleu=-1 Then bleu=255
 If green=-1 Then green=255
 If red=-1 Then red=255

Text x,u,"octets"+y

  Text x+500,u,"?"+v


    u=u+10

If  u>600 Then u=0:Delay 100000:End
   Flip  

    Next 
  
Delay 10000






  Text x+500,u,"?"+v


    u=u+10

If  u>600 Then u=0:Delay 100000:End
   Flip  

    Next 
  
Delay 10000



Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Images en quadrichrome sur vg5000

Message par rendomizer »

je n'arrive toujours pas à comprendre je dois être complètement diminué pour ne plus y arriver ou alors complétement con... les composantes RVB alpha me fond des melanges RVB incomprhenssible alors que je n'ai que le vert a 51

Code : Tout sélectionner

 
file$=RequestFile$("choose a wav file","bmp",False)  
 
 Graphics 800,600,32,2  

  Dim num(100000)    

   fil=OpenFile(file$)         

  For i=1 To 2500 

   num(i)=ReadByte (fil)    

  Next       

  CloseFile(dataout)

  For i=57 To 600 Step 4: v=v+1

 y=num(i) 
 
y2=num(i+1) 

y3=num(i+2)

y4=num(i+3)

Line 0,250,0,0

 Color 255,255,255 

 
Text x,u,"BLEU "+y
Text x+160 ,u ,"VERT "+y2
Text x+240,u ,"ROUGE "+y3
Text x+320,u ,"alpha "+y4  

 Text x+500,u,"?"+v

   u=u+10
If  u>600 Then u=0:Delay 100000:End
  Flip  

   Next 
  

Delay 50000



Voila ce qu'il me donne !!! :shock:
Capture d’écran de 2020-12-06 09-13-34.png
Capture d’écran de 2020-12-06 09-13-34.png (84.3 Kio) Consulté 3940 fois
Je ne suis qu'un utilisateur pas un pro
Répondre