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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

djes a écrit :Franchement, à quoi ça sert puisqu'on peut faire des includebinary nativement dans purebasic?
Le code source se suffit à lui-même, sans dépendre de fichiers extérieurs (*.ico ...).
Très utile aussi pour les archives de codes (j'utilise PureTemplate), on peut extraire le code du ZIP et l'exécuter, sans devoir décompresser en plus d'éventuels fichiers associés.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ok, merci pour vos réponses :)
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: test

Message par beauregard »

Dobro a écrit :tu as utilisé le dernier listing du topic ou le premier ?
parce que seul le dernier est valable !!(je vais effacer le premier)
bien, alors je viens de refaire les tests...
Dobro a écrit :je viens de le tester sur une image de 2048 par 1536
et c'est nikel !! ..
... et avec un png, l'image n'est pas bien restituée( décalage). Pour un jpeg de 1024*768, l'image est parfaitement restituée, et cela donne un code de 39380 lignes*, ce qui est toujours impressionant ! ;) bon, j'imagine que la technique de l'include est de l'ordre du vital dans ce cas là.

je n'ai pas encore eu le temps de tester sérieusement la fonction disponible avec jaPBe, donc c'est une affaire à suivre...

*pb est un peu à la peine pour compiler tout çà.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: test

Message par Backup »

beauregard a écrit :. et avec un png, l'image n'est pas bien restituée( décalage).
ha ? faut que j'essais avec un png alors .. :)

Pour un jpeg de 1024*768, l'image est parfaitement restituée, et cela donne un code de 39380 lignes*, ce qui est toujours impressionant ! ;) bon, j'imagine que la technique de l'include est de l'ordre du vital dans ce cas là.
*pb est un peu à la peine pour compiler tout çà.
c'est pour ça que je conseille d'utiliser le prg img2Data seulement pour des images ayant la taille de 1027x768 Maximum !!

c'est clair que sinon ça rame et en plus le code generé deviens indecent de longueur :)

l'ideal etant un format du style 32x32 64x64 128x128 256x256
pour ce type d'include d'image par Data ..
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

1 point pour Denis :D
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
Après avoir testé ton code, et bien je tiens à te dire merci ! :D
voici le résultat de mes tests:
640*480, durée 1minute environs, pour 480 lignes de data.
4096*75, durée moins de 30 secondes, pour 75 lignes de data.
ces 2 images ont le même nombre de pixels( 307.200 pixels), mais pas le même nombre de ligne. C'est logique, mais il faudra privilégier des images plus larges que hautes( ce qui est aussi le cas pour limiter le nombre de condition incluant clipsprite).

j'ai aussi testé une image de 4096*375, durée d'environ 5 minutes( 375 lignes) un executable de 12 Mo quand même.

j'ai voulu tester une image de 4096*1152, mais là, après une demi-heure, j'ai perdu patience. Je n'ose imaginer un test sur la limite maximale autorisé, à savoir 8192*8192...

une petite modif du code pour avoir un sprite:

Code : Tout sélectionner

                            AddGadgetItem(#Editor_0, 0, "If CreateSprite("+Num_$+", "+Str(L)+", "+Str(H)+",0)")
                            AddGadgetItem(#Editor_0, 1, "") 
                            AddGadgetItem(#Editor_0, 2, "    StartDrawing(SpriteOutput("+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, "")
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

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

Message par beauregard »

et une autre petite modif du code pour avoir un sprite3D, attention toutefois à ne pas être trop gourmand, en respectant la limitation de 512*512( selon la carte vidéo de votre machine):

Code : Tout sélectionner

                            AddGadgetItem(#Editor_0, 0, "If CreateSprite("+Num_$+", "+Str(L)+", "+Str(H)+",#PB_Sprite_Texture)")
                            AddGadgetItem(#Editor_0, 1, "") 
                            AddGadgetItem(#Editor_0, 2, "    StartDrawing(SpriteOutput("+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():CreateSprite3D ( "+Num_$+"3D , "+Num_$+" )")
                            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, "")
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

perplexe

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
Une explication pas à pas me sera nécessaire pour comprendre comment on peut afficher une image résultant de ces joyeux data:

Outils/IncludeBinary, puis je coche Data, je clique fébrilement sur OK, et là, je me retrouve avec 2 datasection rigoureusement identique. Je prend sur moi, et j'en supprime une, et maintenant... qu'est ce que je fais ?

manuel: IncludeBinary inclut le fichier nommé à l'endroit où la commande est placée.
gnozal a écrit :Le code nécessaire à la décompression est créé.
je ne comprend pas où...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: perplexe

Message par Backup »

beauregard a écrit :
gnozal a écrit :Le code nécessaire à la décompression est créé.
je ne comprend pas où...
la premiere ligne est du genre

Code : Tout sélectionner

;  IncludeBinary "entertainer1.jpg" [?entertainer1_jpg_Start , ?entertainer1_jpg_End]
il te suffit de retirer le ";" pour en faire une ligne valide
ton image sera inclue automatiquement ...

pour la lire, tu fait comme d'habitude lorsque tu utilise des image inclues :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Salut beauregard et bonne fête de Noël à toi :D ;


éffectivement, tous les tests n'ont pas été réalisés;

mais il suffit d'un rien pour corriger cette érreur; :D

figure toi beauregard qu'il te suffit de supprimer (avec précaution si possible) l'éditeur de text, car il est réellement responsable des lenteur occasionné par de grandes images; une fois l'éditeur supprimé tu gagneras jusqu'à 100%-(n%<50%) :lol:

mais une fois l'éditeur supprimé tu ne pourras donc plus savoir quant le code Data à put être achevé: la solution : le signal sonor lui seul poura t'indiquer le moment où tu pouras éffectuer un coller (sans copier :idea: )
dans ton code en cours d'édition directement :D
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Fortix a écrit :Salut beauregard et bonne fête de Noël à toi :D ;
Joyeuses fêtes de fin d'année à tous et à toutes ! :D
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Rectif

je rectifies: il ne faut pas supprimer l'éditeur (sinon rien ne fonctionnera)

mais il faut tous simplement cacher l'éditeur avec HideGadget(#Gadget, Etat) pendant la création des Datas et dès qu'il aura finit il faudra le faire réaparaître mais ça c'est vous qui voyez :D
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Fortix a écrit :voyez :D
je vois :)

je suis passé au choses sérieuses, et je commence à convertir mes images en data...
Pour une image pesant 1524 Ko convertis en data, en créant une exécutable de mon jeu, celui-ci grossis de... 7680 Ko !

j'avoue avoir un peu peur pour la suite, et je n'ose imaginer la taille gargantuesque que risque d'avoir l'exe final ! :?
config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pourquoi tu les mets en data ??

pourquoi ne pas les inclures dans l'exe ?
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Dobro a écrit :pourquoi tu les mets en data ??

pourquoi ne pas les inclures dans l'exe ?
heu, oui mais comment fait-on ? avec includebinary ?
config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
Répondre