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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

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

Message 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
Dernière modification par Fortix le jeu. 20/déc./2007 22:19, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

/.............
Dernière modification par Backup le sam. 01/oct./2011 13:48, modifié 1 fois.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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éé.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

test

Message 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!)
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

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

Message 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 ?
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message 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. :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: test

Message 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 !! ..
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Franchement, à quoi ça sert puisqu'on peut faire des includebinary nativement dans purebasic?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Répondre