<Convertion image/Data>

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Je veux jouer avec vous!!!!

Message par Backup »

Huitbit a écrit :Ce programme m'interresse BEAUCOUP car je déteste mettre des img jointes quand je poste un prog!
Bilan, je dessine mes sprites avec des plot, des lines et....paint!

Quand je lance le programme, il me demande de charger une image puis....plus rien!
Si les datas sont crées, je ne sais pas où ils sont :mad:

Ca marche pour tout le monde apparemment, j'ai dû rater un épisode ou/et je suis un gros nase :oops:

Help!

le principe est simple !

tu lance le prg , tu choisi une image a transformer en Data

le programme va generé dans le meme dossier ou il se trouve
un listing Purebasic au nom de "Data.pb", qui faudra que tu charge dans ton editeur (Japbe, ou l'officiel)

ce prg "Data.pb" contient les datas de l'image, ainsi que le loader !!
:D


cela avait ete rapelé dans le 3 em message de ce topic :? :D
andrebernard
Messages : 58
Inscription : jeu. 22/déc./2005 11:23

Message par andrebernard »

Alors la "tataaaaaaaa"

Roulement de tambour, c'est la premiere fois que je vais essayer de venir en aide a quelqu'un au lieu de poser une question.

Je vais essayer de soulager le MAITRE de cette reponse.

Moi aussi ça me faisait ça, alors j'ai regardé le code et ai vu qu'il n'ya avait pas de lecteur spécifié pour créé le fichier.
Donc je me suis dit qu'il doit surement créé ce ficher quelque part sur la machine dans peut etre le repertoire courant ou je ne sais ou....

Moi avec mes petites connaissances, je me suis donc permis de modifier le chemin dans le code du maitre dans la ligne createfile :

Code : Tout sélectionner

num=CreateFile(#PB_Any,"c:\data.pb") :; ceci ecrit le fichier pb (txt) pour etre charge dans l'editeur !! 
Et miracle le petit fichier data est né (pas un 25 decembre) mais c'etait presque aussi beau....sous la racine du C:\

Je ne sais pas si c'etait ce qu'il fallait faire, mais pour moi ça a marché.
Alors si ça peut t'aider, ce sera ma premiere donation à ce forum

Bonne journée
Dernière modification par andrebernard le sam. 23/sept./2006 15:33, modifié 1 fois.
andrebernard
Messages : 58
Inscription : jeu. 22/déc./2005 11:23

Message par andrebernard »

Je m'excuse MAITRE,mais j'ai répondu en meme temps que toi.
Petit scarabé voulais juste se rendre utile.

Tu dit que tu as modifié pour que ce soit plus rapide.
J'ai donc essayé de sortir les "startdrawing "

J'ai donc essayer de modifier en faisant comme tu as dit :

Code : Tout sélectionner

StartDrawing(ImageOutput(#image) ) 
      
      For i =0 To  Largeur -1 
        ligne.s="data.l "  ; insere la fonction data.l avant les valeurs 
        For j = 0 To Hauteur-1 
         ligne.s=ligne.s+Str(Point(i, j))+",":; met des virgules entre les datas 
        Next j 
        ligne.s=Left(ligne.s, Len(ligne.s)-1) :; retire la derniere virgule de la ligne 
        WriteStringN(num,ligne.s):; ecrit une ligne entiere de data 
      Next i 
      
      StopDrawing() 
      
Etais ce qu'il fallait faire ???

J'ai fait pareil dans le fichier data :

Code : Tout sélectionner

CreateImage(#image, Largeur, Hauteur)
If StartDrawing(ImageOutput(#image))
 For i = 0 To Largeur -1
  For j = 0 To Hauteur -1 
   Read a.l 
   Plot(i,j,a.l) 
  Next j
 Next i
 StopDrawing() 
EndIf
Par contre, petit scarabé a rien compris au POINT et PLOT

Pourrais tu à 'occasion nous envoyer ce code amélioré
Merci d'avance
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Confirmation:je suis un gros nase!

Message par Huitbit »

Merci à tous les deux!
Je lançais le programme sans l'avoir sauvegardé, ceci explique cela(j'ai trouvé data.pb dans les fichiers d'installation de PB4!)! :oops: :oops: :oops:
Cet utilitaire me sera très utile! :lol:

Hasta la vista!
Elevé au MSX !
andrebernard
Messages : 58
Inscription : jeu. 22/déc./2005 11:23

Message par andrebernard »

Bah moi, je l'avais sauvegardé, mais le petit data, il a été se creer dans le repertoire des exemples de Pb.

J'avais pas pensé à le chercher la, je le cherchait dans le repertoire de l'image. :oops:

Bon tout est bien qui finit bien, on a tous compris notre erreur.

En tout cas le principal c'est que le code du MAITRE marche.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

andrebernard a écrit :Pourrais tu à 'occasion nous envoyer ce code amélioré
Merci d'avance
j'ai pourtant bien signalé que j'avais modifié le dernier listing posté ici

j'ai indiqué ce que j'avais fait, c'etait pas pour que tu le fasse, puisque c'est deja fait !! 8O

bon je REposte a nouveau le Dernier listing ! :?

Code : Tout sélectionner

; code by Dobro
; pure basic 4.00
; suporte les Formats BMP,Jpeg,Png,TGA,TIFF
; a utiliser sur de petite image max 1024x768
; car au dela cela Rame Grave :D (la fonction point() est en cause)
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Enumeration
  #fenetre
  #image
  #alerte
EndEnumeration
InitSprite()
NewList buffer.s()


If OpenWindow(#fenetre, 0, 0, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )
  If OpenWindowedScreen(WindowID(#fenetre),0,0,800,600,1,1,1)
    NomFichier$ = OpenFileRequester("dobro_datagenerator", "c:", "Fichiers image|*.bmp;*.jpg;*.jpeg;*.png;*.tga;*.tiff", 0 )
    
    If LoadImage(#image, NomFichier$)
      Hauteur = ImageHeight(#image)
      Largeur = ImageWidth(#image) 
      Global Dim tableau(Largeur, Hauteur )
      
      ResizeWindow(#fenetre, 0,0,Largeur,Hauteur)
      If StartDrawing(ScreenOutput() )
        DrawImage(ImageID(#image), 0, 0 )
        StopDrawing()
      EndIf     
      
      ResizeWindow(#fenetre, 0,0,800,600)
      FlipBuffers()
      
      num=CreateFile(#PB_Any,"data.pb") :; ceci ecrit le fichier pb (txt) pour etre charge dans l'editeur !!
      WriteStringN(num,"; codé Par Dobro img to data")
      WriteStringN(num,"Enumeration")
      WriteStringN(num,"#fenetre")
      WriteStringN(num,"#image")
      WriteStringN(num,"#alerte")
      WriteStringN(num,"EndEnumeration")
      WriteStringN(num,"If InitSprite() = 0")
      WriteStringN(num,"MessageRequester("+Chr($22)+"Erreur"+Chr($22)+","+Chr($22)+ "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !"+Chr($22)+","+"#PB_MessageRequester_Ok)")
      ; MessageRequester("","",#PB_MessageRequester_Ok          )
      WriteStringN(num,"End")
      WriteStringN(num,"EndIf")
      WriteStringN(num,"If OpenWindow (#alerte, 0, 0, 320, 50,"+Chr($22)+"alerte"+Chr($22)+",#PB_Window_BorderLess|#PB_Window_ScreenCentered ) ")
      WriteStringN(num,"If StartDrawing(WindowOutput(#alerte)) ")
      WriteStringN(num,"  DrawText(50, 24, "+Chr($22)+"Patience ! je charge les Datas "+Chr($22)+",RGB(255,50,0),RGB(0,0,0)) ")
      WriteStringN(num," StopDrawing() ")
      WriteStringN(num,"  EndIf ")
      WriteStringN(num,"EndIf")
      WriteStringN(num,"Read Largeur")
      WriteStringN(num,"Read Hauteur")
      WriteStringN(num,"Global Dim tableau(Largeur, Hauteur)")
      WriteStringN(num,"CreateImage(#image, Largeur, Hauteur)")
      WriteStringN(num,"If StartDrawing(ImageOutput(#image))")
      WriteStringN(num," ; ***********mise en tableau ************")
      WriteStringN(num,"For i = 0 To Largeur -1")
      WriteStringN(num," For j = 0 To Hauteur -1 ")
      WriteStringN(num,"  Read a.l ")
      WriteStringN(num," tableau(i, j)=a.l ")
      WriteStringN(num,"Next j")
      WriteStringN(num,"Next i")
      WriteStringN(num," ; **************************")
      
      WriteStringN(num,"For i = 0 To Largeur -1")
      WriteStringN(num," For j = 0 To Hauteur -1 ")
      WriteStringN(num,"  Plot(i,j,tableau(i,j)) ")
      WriteStringN(num," Next j")
      WriteStringN(num,"Next i")
      WriteStringN(num," StopDrawing() ")
      WriteStringN(num,"EndIf")
      WriteStringN(num," titre$="+Chr($22)+NomFichier$+Chr($22))
      ; dessous: genere le code qui permet de relire les datas !!
      ; ouaaa du code qui s'autoecrit !!! :-D
      WriteStringN(num,"If OpenWindow (#fenetre, 0, 0, Largeur, Hauteur,titre$,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_SizeGadget)")
      WriteStringN(num,"If  OpenWindowedScreen(WindowID(#fenetre), 0, 0, Largeur, Hauteur, 1, 1, 1) ")
      WriteStringN(num,"If StartDrawing(ScreenOutput())")
      WriteStringN(num," DrawImage(ImageID(#image), 0, 0)  ")
      WriteStringN(num,"StopDrawing() ")
      WriteStringN(num,"EndIf")
      WriteStringN(num,"Largeur=Largeur/4 ; affiche 4 fois plus petit")
      WriteStringN(num,"Hauteur=Hauteur/4 ; affiche 4 fois plus petit")
      WriteStringN(num,"ResizeWindow(#fenetre,0,0,Largeur,Hauteur)")
      WriteStringN(num,"CloseWindow(#alerte)")
      WriteStringN(num," Repeat")
      WriteStringN(num,"Until WaitWindowEvent()= #PB_Event_CloseWindow")
      WriteStringN(num,"EndIf")
      WriteStringN(num,"EndIf ")
      WriteStringN(num,"End ")
      ;************************
      
      If OpenWindow (#alerte, 0, 0, 500, 50,"alerte",#PB_Window_BorderLess|#PB_Window_ScreenCentered )
        If StartDrawing(WindowOutput(#alerte))
          DrawText(50, 24, "Patience ! je sauve les Datas dans 'Data.Pb' ",RGB(255,50,0),RGB(0,0,0))
          StopDrawing()
        EndIf
      EndIf
      
      WriteStringN(num,"DataSection") :; commence la section des data
      WriteStringN(num,"Data.l "+Str( Largeur)+","+Str( Hauteur)) 
      StartDrawing(ImageOutput(#image) )
      ; *********** mise en tableau de l'image ************
      For Y=0 To Hauteur-1
        For X=0 To Largeur-1
          tableau(X,Y)=Point(X, Y)
        Next X 
      Next Y
      ; *********************************************
      
      For i =0 To  Largeur -1
        ligne.s="data.l "  ; insere la fonction data.l avant les valeurs
        For j = 0 To Hauteur-1 
          ligne.s=ligne.s+Str(tableau(i,j))+",":; met des virgules entre les datas 
        Next j
        ligne.s=Left(ligne.s, Len(ligne.s)-1) :; retire la derniere virgule de la ligne
        AddElement( buffer.s())
        buffer.s()= ligne.s 
      Next i
      ForEach buffer.s()
        WriteStringN(num, buffer.s()):; ecrit une ligne entiere de data 
      Next
      
      
      StopDrawing()
      WriteStringN(num," "):; saute une ligne vide
      WriteStringN(num,"EndDataSection") :;ecrit la fin de section data
      CloseFile(num)
    EndIf
    CloseWindow(#alerte)
    CloseWindow(#fenetre)
  EndIf
EndIf
End



Kwan Chang Caine
Messages : 4
Inscription : sam. 23/sept./2006 16:43

Message par Kwan Chang Caine »

Excuse moi, je ne merite pas ta colere ...... :cry:

Mais, ce n'est pas toujours facile de comprendre en lisant quelque phrases.

J'ai cru que tu avais trouvé entre temps et que tu n'avais pas eu le temps de le poster.

Je ne suis qu'un modeste disciple de ce temple, qui essai d'apporter un grain de sable a la construction de cet immense edifice qu'est purebasic. :oops:

Merci pour ce code

PS:

J'ai changé de pseudo en cours, je crois que je l'ai bien choisi.
Zut, j'ai cherché l'orthographe sur le web 1/4 h, et c'est pas encore la bonne .....
et pourtant :

http://www.google.fr/search?hl=fr&q=%22 ... cher&meta=

Je suis dégouté ..
Tanpis, je ne peut pas la changer à nouveau, je vais finir par me faire virer.

En tout cas grand merci pour ton cadeau, ton super mp3, je le garderais comme la pierre que le maitre tenais dans sa main, je suppose que c'est toi qui joue ????, si c'est le cas cela n'en a que plus de valeur.

Je te salut bien bas.
Excelente journée a toi.
Répondre