Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Restitution Aléatoire d'une Image (Compilation ?) | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 12:11 | |
| Bonjour à tous, et en particulier Jack. J'ai déposé sur mon Webdev (My drive) Fichier_Image_Aléatoire.zipIl s'agit d'un petit programme qui restitue une image, pixel par pixel, à partir d'un fichier aléatoire. Le principe: chaque élément d'un pixel de l'image est enregistré dans un fichier ordonné. Ce fichier a été trier pour obtenir un fichier aléatoire. (Le programme qui fait ce travail existe, mais je ne le publie pas pour le moment) @Tous, Il suffit de lancer "Pixel_2.bas" (sans changer de répertoire) et d'attendre. Vous verrez l'image se reconstituer progressivement sur votre écran. Pour les plus patients l'image est restituée en 14 minutes (13:56 exactement chez moi). Rassurez-vous, vous pouvez fermer à tout moment. @Jack, Peux-tu trouver un peu de temps pour en faire une compilation, car j'aimerai voir en combien de temps l'image serait restituée. Et voir l'effet visuel d'une restitution plus rapide. Les lignes 24 à 27 risquent de poser un problème pour la compilation (utilisation de FILEBIN_READ). Si c'est le cas tu peux les remplacer par la ligne 29 qui est en commentaire, Ou m'indiquer s'il existe une solution de remplacement. Je pense que le reste du code est compatible. A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 20:14 | |
| Salut jean Claude ! voici un code plus simple qui produit le même résultat. J'utilise 3 Picture les uns sur les autres. - Le premier contient l'image et il est caché. - Le second est un backup et il est caché aussi Il permet de savoir si un point a déjà été sélectionné. Si le point est sélectionné il passe en blanc au lieu de noir. - le troisième est l'affichage du résultat en collant les couleurs du pixel repris sur le Picture 1 J'ai déposé une version compilé sur mes 2 Webdav sous le nom de Image-JeanCLaude.exe. Je t'invite a tester... Et encore j'ai un peu triché pour y arriver car normalement le résultat doit être encore plus rapide... J'ai utiliser une des dernières versions du compilateur que Jack avait fourni. Voilà le code : - Spoiler:
DIM a%, n%, x%, y% ,r%, v%, b%
LABEL fermer
a%=1020 : REPEAT : a%=a%+1 : WIDTH 0,a% : UNTIL WIDTH_CLIENT(0)=1020 a%=385 : REPEAT : a%=a%+1 : HEIGHT 0,a% : UNTIL HEIGHT_CLIENT(0)=385 ON_CLOSE 0,fermer
PICTURE 1 : HIDE 1 : PARENT 1,0 : WIDTH 1,1020 : HEIGHT 1,385 : FILE_LOAD 1,"Image3.bmp" PICTURE 3 : HIDE 3 : PARENT 3,0 : WIDTH 3,1020 : HEIGHT 3,385 : COLOR 3,0,0,0 PICTURE 5 : PARENT 5,0 : WIDTH 5,1020 : HEIGHT 5,385 : COLOR 5,0,0,0
n%=385*1020
FOR a%=1 TO n% REPEAT x%=RND(1020) : y%=RND(385) UNTIL COLOR_PIXEL_BLUE(3,x%,y%)=0 2D_TARGET_IS 3 : 2D_PEN_COLOR 255,255,255 : 2D_POINT x%,y% r%=COLOR_PIXEL_RED(1,x%,y%) : v%=COLOR_PIXEL_GREEN(1,x%,y%) : b%=COLOR_PIXEL_BLUE(1,x%,y%) 2D_TARGET_IS 5 : 2D_PEN_COLOR r%,v%,b% : 2D_POINT x%,y% NEXT a%
END
fermer: TERMINATE RETURN
Dernière édition par Minibug le Mar 4 Juin 2019 - 23:40, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 20:47 | |
| WOIHOU ! ça déménage, Bravo Minibug, ton code est bien plus rapide, même avec l'éditeur. Pour la version compilée, c'est super, moins de 15 secondes. Dommage que je n'ai pas gardé le dernière version du compilateur. Je vais étudier ton code, car on ne joue pas dans la même courre, j'ai beaucoup à apprendre. A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 21:04 | |
| - Citation :
- Je vais étudier ton code, car on ne joue pas dans la même courre, j'ai beaucoup à apprendre.
Bof !! Je teste des choses, et des fois, je découvre des bonnes surprises comme celle-ci ! Pour le compilateur tu le trouvera aussi sur les webdav dans le dossier Panoramic. Pour le code compilé il s'exécute en 12 secondes mais sans aucun affichage. J'ai donc du le ralentir un peu pour avoir l'affichage au fur et a mesure... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 21:07 | |
| Merci Minibug, je vais jouer avec ça demain.
A+ | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 22:54 | |
| @Jean-Claude Compilation de Pixel_2.bas: 1 - il faut séparer le source en zones de déclaration de variable, de déclaration de labels, de données (il n'y en a pas ici), de code Or, il y a du code dans les déclarations de variable - Code:
-
dim sep$ : sep$="|" :' Séparateur pour "Système éléments" dim nb_el% : nb_el%=5 :' Nombre d'éléments par ligne dim el$(nb_el%) :' élément(de 1 à 5) ' Label label fin devient: - Code:
-
dim sep$ dim nb_el% dim el$(nb_el%) :' élément(de 1 à 5) ' Label label fin sep$="|" :' Séparateur pour "Système éléments" nb_el%=5 :' Nombre d'éléments par ligne 2 - Avec le compilateur, la dimension d'un tableau ne peut pas être une variable. j'ai changé - Code:
-
dim el$(nb_el%)
en - Code:
-
dim el$(5)
C'est tout! Tout le reste compile. Le résultat est ici: https://e-nautia.com/karma/disk/PANORAMIC/Pixel_2.exe_________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 23:01 | |
| _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mar 4 Juin 2019 - 23:46 | |
| Oui Jack, sauf que de cette façon il n'y a aucun affichage visible.
Je suis obligé de rajouter des PRINT en fin de boucle pour maintenir l'affichage sinon écran noir !
Avec une ligne du style : IF INT(a%/1000)=(a%/1000) THEN PRINT qui force un rafraîchissement de l'affichage.
J'ai essayé avec DISPLAY mais rien n'y fait. Il y a peut être une astuce mais là je vois pas bien... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mer 5 Juin 2019 - 8:05 | |
| Merci Jack d'avoir pris le temps de compiler mon code. Résultat: restitution de l'image en 3 minutes à la place de 14. Je m'excuse pour dim el$(nb_el%) car je savais que ça n'était pas accepté par le compilateur, c'est passé à travers mon contrôle l'osque j'ai décidé de proposer le code à la compilation. C'est également vrai pour dim nb_el% : nb_el%=5 (du code dans la zone de déclaration de variable). Je vais pouvoir continuer, car le résultat me convient et je vais étudier la méthode de Minibug. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mer 5 Juin 2019 - 12:18 | |
| Bonjour à tous, Comme promis j'ai regardé ton code Minibug. Dans le code que tu as publier hier il y avait une inversion des couleurs v% et b%. Mais je vois que tu as corrigé. Du coup, la version compilée fourni par Jack n'a pas les bonnes couleurs. J'ai repris ton code corrigé et je l'ai compilé avec la version "PANORAMIC COMPILATEUR 0.9 beta 10" que j'ai télécharge sur ton CloudMe. Constat: l'image apparaît à la fin, sans visualisation de la progression. J'ai essayé avec DISPLAY, WAIT, PAUSE pour gérer la progression mais rien n'y fait. Autre constatation: il reste quelques pixels qui n'ont pas été "corrigés" Ensuite j'ai intégré la ligne IF INT(a%/1000)=(a%/1000) THEN PRINT , comme tu l'expliques plus haut, et j'ai compilé. ça marche , mais il reste encore quelques pixels qui n'ont pas été "corrigés", ce qui n'est pas le cas avec "Image-JeanCLaude.exe" que tu as déposé sur ton Webdev (My Drive), hier. Puis-je avoir le code bas qui correspond pour voir la différence ? A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mer 5 Juin 2019 - 16:54 | |
| Salut Jean Claude !
C'est le même code sauf que tu rajoute SHOW 1 : HIDE 5 à la fin et le tour est joué !
J'ai tenté d'autre approches... Un DLIST ou une variable p%(1020,385) pour contenir les variables couleurs. Mais elle sont toutes plus longues à mettre en œuvre !
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Mer 5 Juin 2019 - 20:19 | |
| - Citation :
- C'est le même code sauf que tu rajoute SHOW 1 : HIDE 5 à la fin et le tour est joué !
Vilain tricheur Minibug... Bon ça marche, mais ta solution masque une imperfection que je n'ai pas réussi à trouver. De mon coté j'ai simplifié mon code au maximum, mais je n'ai pas réussi à maîtriser le temps de progression de la restitution de l'image, dans sa version compilée. Toutefois, mon système rend une image complète en 3 minutes et 25 secondes, une fois compilé. J'ai travaillé aussi sur le code qui fabrique le fichier aléatoire, mais ce n'est pas au top.... Il faut que je change de système. Voici mon code d'hier simplifié. (à remplacer et recompiler dans le même répertoire qu'hier) - Code:
-
' pixel_2
' Objectif: restituer une image à partir d'un fichier
' Dim dim a$,NomImg$,fm$,fmp$,fma$,Chaine$ dim n%,n2%,ii%,w1%,h1%,x%,y%,r%,g%,b% dim Dlist_img%,Dlist_tri%,Dlist2%,Dlist3% ' Label label fin ' Fichier Image et détection dimensions NomImg$="Image3" fm$=NomImg$+".bmp" fmp$="Fichier"+NomImg$+".txt" fma$="FichierAleatoire"+NomImg$+".txt" FILEBIN_OPEN_READ 1,fm$: ' dimensions image (JL35) FILEBIN_POSITION 1,18: w1% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: h1% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1
' Création et dimensions Objets width 0,w1%+16 : height 0,h1%+39 : border_small 0 : on_close 0,fin left 0,(screen_x-width(0))/2 : top 0,(screen_y-height(0))/2 picture 2 : width 2,w1% : height 2,h1% : left 2,0 : top 2,0 :' color 2,0,0,0 color 2,rnd(255),rnd(255),rnd(255) Dlist_tri%=3 : dlist Dlist_tri% : Dlist_img%=4 : dlist Dlist_img% Dlist2%=5 : dlist Dlist2% : Dlist3%=6 : dlist Dlist3%
' Restitution de l'image clear Dlist3% : file_load Dlist3%,fma$ clear Dlist_img% : file_load Dlist_img%,fmp$ Restitution() caption 0,"terminé" :' message "terminé" END ' ============================================================================== SUB Restitution() caption 0,"Restitution aléatoire de l'image en cours..." 2d_target_is 2 FOR n%=1 to count(Dlist3%) n2%=val(item_read$(Dlist3%,n%)) : Chaine$=item_read$(Dlist_img%,n2%) caption 0,"Restitution en cours... "+str$(n%)+" / "+str$(count(Dlist3%)) clear Dlist_tri% ' Explode WHILE INSTR(Chaine$,"|")<>0 ITEM_ADD Dlist_tri%,LEFT$(Chaine$,INSTR(Chaine$,"|")-1) Chaine$=RIGHT$(Chaine$,LEN(Chaine$)-INSTR(Chaine$,"|")) END_WHILE ITEM_ADD Dlist_tri%,Chaine$ ' Ecriture x%=val(item_read$(Dlist_tri%,1)) : y%=val(item_read$(Dlist_tri%,2)) r%=val(item_read$(Dlist_tri%,3)) : g%=val(item_read$(Dlist_tri%,4)) : b%=val(item_read$(Dlist_tri%,5)) 2d_pen_color r%,g%,b% : 2d_point x%,y% NEXT n% END_SUB ' ------------------------------------ fin: terminate Return A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) Sam 8 Juin 2019 - 10:17 | |
| Bonjour jean Claude Pour répondre à ta question : - Citation :
- Bon ça marche, mais ta solution masque une imperfection que je n'ai pas réussi à trouver.
Oui c'est vrai mais je n'ai pas trop creuser... Je vais tenter de voir d’où cela vient ! | |
| | | Contenu sponsorisé
| Sujet: Re: Restitution Aléatoire d'une Image (Compilation ?) | |
| |
| | | | Restitution Aléatoire d'une Image (Compilation ?) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |