Page 1 sur 4

LE CONVERTISSEUR IMAGE/DATA POUR ****TOUS**** (Version 1)

Publié : mer. 19/déc./2007 10:43
par Fortix
Salutation :D ,

Je viens de créer un petit programme qui poura vous faciliter la tache;
Ce prog consiste à convertir une image (touts formats) en base de données DataSection en plus de son lecteur Data pour reconstituer l'image

celà poura vous permettres d'incorporer des images dirrectement dans l'executable; vous enttendrez un signal sonore qui vous indiquera que la convertion est terminée et qu'elle est chargée dans le presse papier pour coller le tous dans votre code en cours d'édition sans avoir à le copier à partir de l'éditeur du convertisseur;


j'attents vos réactions, Merci :D


Code : Tout sélectionner

;The Fortix    .::Convertor V1::.

Enumeration
  #Editor_0 
  #Button_0
  #Button_1
  #Button_2
EndEnumeration


UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()


Global FontID1
    FontID1 = LoadFont(1, "Courier New", 9, #PB_Font_Bold)


Procedure Open_Editor_0()

    If OpenWindow(#Editor_0, 344, 172, 256, 250, "Fortix_Convertor_DATA",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget  | #PB_Window_TitleBar )
    
        If CreateGadgetList(WindowID(#Editor_0))
        
            EditorGadget(#Editor_0, 5, 40, 245, 150,#PB_Editor_ReadOnly)
            SetGadgetFont(#Editor_0, FontID1)
            SetGadgetColor(#Editor_0, #PB_Gadget_BackColor, RGB(0,0,0))
            SetGadgetColor(#Editor_0, #PB_Gadget_FrontColor, RGB(0,128,255))
            SetWindowColor(#Editor_0, RGB(0,0,128))
            GadgetToolTip(#Editor_0, "Une fois la liste DATA établit, copier son contenu puis introduisez le en SectionData dans le code en cour d'édition")      
          
            ButtonGadget(#Button_0, 5, 10, 245, 20, "OUVRIR IMAGE")
          
            ButtonGadget(#Button_1, 5, 195, 245, 20, "NOUVELLE IMAGE ?")
            GadgetToolTip(#Button_1, "Appuyer ici pour ouvrir une nouvelle image")
          
            ButtonGadget(#Button_2, 5, 220, 245, 20, "ENREGISTRER IMAGE DATA")
            GadgetToolTip(#Button_2, "Appuyer ici pour enregistrer votre image  DATA  en format texte (*.txt)")  
            ;PureCOLOR_SetButtonColor(#Button_2, RGB(128,128,64), RGB(0,128,182))
            ProcedureReturn 1
            
        EndIf
            
    EndIf
  
EndProcedure



If Open_Editor_0()

    DisableGadget(#Button_0,0)
    DisableGadget(#Editor_0,1)
    DisableGadget(#Button_1,1)
    DisableGadget(#Button_2,1)
       
    Repeat
    
        EventID = WaitWindowEvent()
        
        If EventID = #PB_Event_Gadget
    
            Select EventGadget()
          
                Case #Button_0
                
                    
                    Num_$=InputRequester("ID","Attribuez un ID de depart:","0")
                    
                    If Num_$="" Or Num_$=" "
                        Num_$="0"
                    EndIf

        
                    Nm_File_$ = OpenFileRequester("Ouverture de l'image à convertir", Nm_File_$, "Fichiers Image|*.jpg;*.jpeg;*.tga;*.bmp;*.png;*.tif;*.gif", 0 )
                
                    s$=GetFilePart(Nm_File_$)
                
                    Label_$=StringField(s$,1," ")
                    
                    If FindString(Label_$,".",1)
                        Label_$=StringField(s$,1,".")
                    EndIf
                
                    If Nm_File_$
                        DisableGadget(#Button_0,1)
                        DisableGadget(#Editor_0,0)
                                                           
                        If LoadImage(0, Nm_File_$) 
                            H = ImageHeight(0) 
                            L = ImageWidth(0) 
                            
                            AddGadgetItem(#Editor_0, 0, "If CreateImage("+Num_$+", "+Str(L)+", "+Str(H)+")")
                            AddGadgetItem(#Editor_0, 1, "")  
                            AddGadgetItem(#Editor_0, 2, "    StartDrawing(ImageOutput("+Num_$+"))")
                            AddGadgetItem(#Editor_0, 3, "")          
                            AddGadgetItem(#Editor_0, 4, "        Restore "+Label_$)
                            AddGadgetItem(#Editor_0, 5, "")                                
                            AddGadgetItem(#Editor_0, 6, "        For ay=0 To "+Str(H)+"-1")
                            AddGadgetItem(#Editor_0, 7, "            For ax=0 To "+Str(L)+"-1")
                            AddGadgetItem(#Editor_0, 8, "")            
                            AddGadgetItem(#Editor_0, 9, "                Read a.l")
                            AddGadgetItem(#Editor_0, 10, "                Plot(ax,ay,a.l)")
                            AddGadgetItem(#Editor_0, 11, "")                            
                            AddGadgetItem(#Editor_0, 12, "            Next ax")
                            AddGadgetItem(#Editor_0, 13, "        Next ay")           
                            AddGadgetItem(#Editor_0, 14, "    StopDrawing()")
                            AddGadgetItem(#Editor_0, 15, "")    
                            AddGadgetItem(#Editor_0, 16, "    ay=0")
                            AddGadgetItem(#Editor_0, 17, "    ax=0")
                            AddGadgetItem(#Editor_0, 18, "EndIf")                            
                            AddGadgetItem(#Editor_0, 19, "")
                            AddGadgetItem(#Editor_0, 20, "")
                            
                            
                            
                            AddGadgetItem(#Editor_0, 21, "DataSection")
                            AddGadgetItem(#Editor_0, 22, "  "+Label_$+":")   
                                                         
                            StartDrawing(ImageOutput(0))
                            
                                For y=0 To H-1
                                    ligne$="  data.l "
                                    
                                    For x=0 To L-1;+(2-1)
                                    
                                        hx$=Hex(Point(x,y))
                                        hx$="$"+RSet(hx$,6,"0")
                                    
                                        ligne$=ligne$+hx$+","                                   
                                    
                                    Next x
                                    
                                    ligne$=Left(ligne$, Len(ligne$)-1)                        
                                    AddGadgetItem(#Editor_0, -1, ligne$)                                
                                Next y 
                                  
                            StopDrawing()  
                                               
                      
                            AddGadgetItem(#Editor_0, -1, "") 
                          
;                             AddGadgetItem(#Editor_0, -1, ";_Hauteur: "+Str(H)+" px")
;                             AddGadgetItem(#Editor_0, -1, ";_Largeur: "+Str(L)+" px")
                            
                            AddGadgetItem(#Editor_0, -1, "EndDataSection")
                          
                            DisableGadget(#Button_1,0)
                            DisableGadget(#Button_2,0)
                            
                            SetClipboardText(GetGadgetText(#Editor_0))
                            MessageBeep_(48)
                        EndIf
                    
                    EndIf 
                    
        
                Case #Button_1
                
                    ClearGadgetItemList(#Editor_0)
                    
                    DisableGadget(#Button_0,0)
                    DisableGadget(#Editor_0,1)
                    DisableGadget(#Button_1,1)
                    DisableGadget(#Button_2,1)
        
                Case #Button_2
                           
                    Datalist$ = GetGadgetText(#Editor_0)
                    DestiFichier$ = SaveFileRequester("Enregistrement du fichier à convertir", Nm_File_$+"_VData.txt", "*.txt", 0 )
                    
                    CreateFile(2,DestiFichier$+"_VData.txt")
                        WriteStringN(2,Datalist$)
                    CloseFile(2) 
                    
                    ClearGadgetItemList(#Editor_0)
                    
                    DisableGadget(#Button_0,0)
                    DisableGadget(#Editor_0,1)
                    DisableGadget(#Button_1,1)
                    DisableGadget(#Button_2,1)
     
            EndSelect
         
        EndIf
    
    Until EventID = #PB_Event_CloseWindow
    
    CloseWindow(#Editor_0)
    
    End
EndIf

Note: la version 2 est en cours................ :D

Publié : mer. 19/déc./2007 11:11
par Backup
hum ! hum !

http://www.purebasic.fr/french/viewtopi ... t=img+data

:lol:

avec la derniere version tu peux meme choisir le nombre de data generé par ligne !! :D

la seul chose, je n'avais pas utilisé le press papier, je genere un listing PB
mais c'est facilement modifiable :)

Publié : mer. 19/déc./2007 12:29
par Fortix
:lol: Effectivement Dobro, la ressemblance est édifiante mais le rendut est tellement différent qu'il serait déplacé de dire qu'il sagit d'une copie, mais j'avoue néanmoin m'être inspiré de l'idée, ma version aura en tous cas permis à une plus grande simplicitée sans parler des nombreux fonctionnallitées ajoutées à l'idée de base (et Basic si je puis dire :lol: )dont tu en es l'hauteur incontestable

en tous cas, la 2èmes version n'aura plus tes repaires si sapeu te rassurer :D

tes réactions Dobro :D

Publié : mer. 19/déc./2007 17:58
par Backup
/.............

Publié : jeu. 20/déc./2007 15:13
par Fortix
c'est bien ce que je me disais, Dobro, tu as mal interpreté ma réponse :oops: ;

mais c'est de ma faute, j'aurais dû mieu doser la quantitée de "Smilies" pour rendre ma réponse interpretable que dans un sens :cry: ;

sache que ton idée ma ouvert des horizons surtous que c'était moi qui t'avais demandé de trouver un moyen pour convertir Une image en Data, je te demande donc de concidérer ma version comme un jeste de reconnaissance :D

encore merci Dobro :D

Publié : jeu. 20/déc./2007 17:03
par gnozal
Pour info (et pour les utilisateurs de jaPBe) : Menu Outils -> IncludeBinary permet d'inclure des fichiers (image ou pas) sous forme de datas, avec compression ou pas. Le code nécessaire à la décompression est créé.

Publié : jeu. 20/déc./2007 19:15
par Backup
Fortix a écrit :c'est bien ce que je me disais, Dobro, tu as mal interpreté ma réponse :oops: ;
ha bah oui !! :oops: :oops: :lol: :lol: :lol: tout est arrangé


:D**
gnozal a écrit :Pour info (et pour les utilisateurs de jaPBe) : Menu Outils -> IncludeBinary permet d'inclure des fichiers (image ou pas) sous forme de datas, avec compression ou pas. Le code nécessaire à la décompression est créé.
ha oui ! j'oublie toujours ça, faudra que je regarde comment ça marche :D
Merci

test

Publié : jeu. 20/déc./2007 19:45
par beauregard
Dobro a écrit :avec la derniere version tu peux meme choisir le nombre de data generé par ligne !! :D
bonsoir,
qu'elle est la taille maximale que tu peux ainsi convertir en data ?

1er test-> une image d'une taille de 258*2145, et seules les première lignes sont correctement restituées.

2eme test-> une image d'une taille de 681*750, là ça va mieux, mais il y a un décalage au milieu de l'image. image png=40ko, date.pb=4487ko( ouch!)

Re: LE CONVERTISSEUR IMAGE/DATA POUR ****TOUS**** (Version

Publié : jeu. 20/déc./2007 19:48
par beauregard
Fortix a écrit :Salutation :D ,

Je viens de créer un petit programme qui poura vous faciliter la tache;
Ce prog consiste à convertir une image (touts formats) en base de données DataSection en plus de son lecteur Data pour reconstituer l'image
la aussi même question, qu'elle est donc la taille maximum de l'image que ton code peut gérer ?

Publié : jeu. 20/déc./2007 20:25
par beauregard
gnozal a écrit :Pour info (et pour les utilisateurs de jaPBe) : Menu Outils -> IncludeBinary permet d'inclure des fichiers (image ou pas) sous forme de datas, avec compression ou pas. Le code nécessaire à la décompression est créé.
je re-découvre ton logiciel, qui déchire comme dise les jeunes. :)

Publié : jeu. 20/déc./2007 22:22
par Fortix
No limite :lol:

enfin, jusqu'à preuve du contraire :lol:

Note: je viens de corriger une petite gourde dans le code même (en haut) :lol:

Re: test

Publié : jeu. 20/déc./2007 23:08
par Backup
beauregard a écrit :
Dobro a écrit :avec la derniere version tu peux meme choisir le nombre de data generé par ligne !! :D
bonsoir,
qu'elle est la taille maximale que tu peux ainsi convertir en data ?

1er test-> une image d'une taille de 258*2145, et seules les première lignes sont correctement restituées.

2eme test-> une image d'une taille de 681*750, là ça va mieux, mais il y a un décalage au milieu de l'image. image png=40ko, date.pb=4487ko( ouch!)
tu as utilisé le dernier listing du topic ou le premier ?

parce que seul le dernier est valable !!

(je vais effacer le premier)

je viens de le tester sur une image de 2048 par 1536
et c'est nikel !! ..

Publié : ven. 21/déc./2007 12:04
par djes
Franchement, à quoi ça sert puisqu'on peut faire des includebinary nativement dans purebasic?

Publié : ven. 21/déc./2007 13:24
par Backup
djes a écrit :Franchement, à quoi ça sert puisqu'on peut faire des includebinary nativement dans purebasic?
il y a plusieurs raisons, je dirai :

1- la recherche intellectuel , savoir le faire est tres valorisant, pour soi-meme
le principe de base des passionnés de programmation c'est justement de chercher a faire les choses, parceque a ce titre, pourquoi faire un Jeux ,ou une application,puisque je suis sur qu'elle existe deja ailleurs....

2- lorsque tu inclus une image ou un son en passant par includebinary
il est tres facile a l'aide d'un editeur Hexa,ou d'un Ripper de repiquer une image ou un son, que tu voudrai proteger, en passant par les Datas, ils sont nettement moins visibles, d'autant que rien empeche le criptage ensuite ...
(Ce peut etre pour un "Marquage" aussi .. bien sur)

voila il y a surement d'autre raisons, mais la ça ne me viens pas :)

Publié : ven. 21/déc./2007 13:26
par Anonyme2
Ca permet surtout de poster un code complet sur le forum sans mettre des images en téléchargement, c'est vraiment un plus