charger image en mémoire
Publié : lun. 30/janv./2006 14:24
par david
simple mais alors je crois que j'ai du... dans les yeux
ci-après une partie de mon prog
1. il liste les fichiers JPG et BMP et les conserve en memoire
2. il en prend un de manière aléatoire
mais alors pourquoi à la question RESULTAT = 0 et qu'il ne charge pas mon image ?????? j'ai du oublié un truc évident, mais alors quoi?????
UseJPEGImageDecoder () ;***DECODEUR JPEG
Enumeration
#Window_0
#Button_1
#Button_2
#Button_3
#String_0
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#image_gadget1 ;arriere plan
#image1 ;gaby1
#image2 ;gaby2
#image0 ; image variable...
#TrackBar_0
#TrackBar_10
#Path_0
#Button_11
EndEnumeration
chemin$ = "C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle"
NewList Maliste.s()
If ExamineDirectory (0, chemin$, "*.*" )
Repeat
FileType = NextDirectoryEntry()
If FileType = 1
FileName$ = DirectoryEntryName ()
ext$= UCase ( GetExtensionPart (fileName$))
If ext$= "JPG" Or ext$= "JPEG" Or ext$= "BMP"
AddElement (Maliste()) : Maliste()=FileName$
EndIf
EndIf
Until FileType = 0
Else
MessageRequester ( "Erreur" , "impossible de créer la liste" + Chr (10)+ "veuillez reconfigurer les paramètres..." )
EndIf
Compteur = CountList (Maliste())
Debug Compteur ; affiche le nombre de fichier trouvé
;*******************************************
;*** affiche aléatoirement Maliste(x) ***
;*******************************************
If Compteur>0
SelectElement (Maliste(), Random (compteur))
imageencour$=#CRLF$ +Maliste()
MessageRequester ( "!!!!" , chemin$+"\"+imageencour$ )
resultat = LoadImage ( #image0 , chemin$+"\"+imageencour$ ) ;
If resultat = 0
MessageRequester ( "!!!!" , "pas chargee" )
EndIf
Publié : lun. 30/janv./2006 14:56
par comtois
je n'ai pas tout regardé , mais que vient faire le #CRLF$ dans
Sinon , quand tu postes un code ça serait bien que tu utilises les balises
Code
Edit ton post , et regarde en haut , il y a des boutons , dont un qui s'appelle code , tu sélectionnes ton programme et ensuite tu cliques sur Code , et oh joie , oh bonheur , ton post devient tout de suite plus lisible

Publié : lun. 30/janv./2006 15:01
par olivier
Pourquoi tu as mis ce #CRLF$ + :
imageencour$=#CRLF$ +Maliste()
Enlève le et cela devrais aller mieux.
Bon courage.
Stef
Publié : lun. 30/janv./2006 15:04
par olivier
A chaque fois que j'essaye de répondre à un post pour contribuer aussi, le temps que je rédige ma réponse....
Bon j'en ai marre, vous êtes trops rapide.
C'est ça que j'aime bien lorsque je suis en panne !

Publié : lun. 30/janv./2006 15:11
par Flype
Code : Tout sélectionner
UsePNGImageDecoder()
UseJPEGImageDecoder()
Enumeration
#Window_0
#Button_1
#Button_2
#Button_3
#String_0
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#image_gadget1
#image1
#image2
#image0
#TrackBar_0
#TrackBar_10
#Path_0
#Button_11
EndEnumeration
;***********************************************
;*** Examine le dossier et remplit Maliste() ***
;***********************************************
chemin$ = "C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle"
NewList Maliste.s()
If ExamineDirectory (0,chemin$,"*.*")
Repeat
Select NextDirectoryEntry()
Case 0
Break
Case 1
FileName$ = DirectoryEntryName()
FileExt$ = UCase(GetExtensionPart(FileName$))
If FindString("JPG,JPEG,BMP,PNG",FileExt$,1)
AddElement(Maliste())
Maliste() = FileName$
EndIf
EndSelect
ForEver
Else
MessageRequester("Erreur","impossible de créer la liste"+#LF$+"Veuillez reconfigurer les paramètres...")
EndIf
;**********************************
;*** Vérification de Maliste(x) ***
;**********************************
Compteur = CountList(Maliste())
If Compteur
MessageRequester("Information",Str(Compteur)+" images chargées.")
Else
MessageRequester("Erreur","Aucune image chargée.")
End
EndIf
;*******************************************
;*** Affiche aléatoirement Maliste(x) ***
;*******************************************
SelectElement(Maliste(),Random(Compteur))
If OpenWindow(0,0,0,640,480,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,chemin$+"\"+Maliste())
If CreateGadgetList(WindowID())
ImageGadget(#image_gadget1,5,5,630,460,0)
EndIf
If LoadImage(#image0,chemin$+"\"+Maliste())
SetGadgetState(#image_gadget1,UseImage(#image0))
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: Break
EndSelect
ForEver
EndIf
Je confirme - ca vient uniquement de ton #CRLF$ qui n'a rien à faire là.
c'était bien ça mais j'ai encore un pb
Publié : lun. 30/janv./2006 16:10
par david
j'ai essayé de modifier les paramètres de la Procedure AlertThread
mais ça plante à chaque fois. le but était que toute les x secondes
l'image Image#0 arrière plan du programme soit modifiée automatiquement mais rien n'y fait
code:
UseJPEGImageDecoder () ;***DECODEUR JPEG
UsePNGImageDecoder () ;
UseTGAImageDecoder () ;
UseTIFFImageDecoder () ;
;***********DECODE VARIABLES***********
chemin$="C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle"
a=0
textb=21
textb$=Str(textb)
taille=3
fenetre=tailley
transparent=75
taillex= 200
tailley = 200
posix = 200
posiy = 200
;
;
;
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Declare SetWinTransparency(WinHandle.l, Transparency_Level.l)
Global bouton,flag,Handle
;- Gadget Constants
;
Enumeration
#Window_0
#Button_1
#Button_2
#Button_3
#String_0
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#image_gadget1 ;arriere plan
#image1 ;gaby1
#image2 ;gaby2
#image0 ; image variable...
#TrackBar_0
#TrackBar_10
#TrackBar_2
#TrackBar_20
#Path_0
#Button_11
EndEnumeration
;
;
;************************************
;*** creation alerte timing *********
;************************************
Procedure AlertThread(Parameter)
Repeat
MessageRequester("Info", "Alert ("+Str(Parameter)+")", 0)
Delay(3000)
ForEver
EndProcedure
;************************************
;*** charge image programme *********
;************************************
LoadImage ( #image1 , path1$+"gaby1.jpg" ) ;image de depart
LoadImage ( #image2 , path2$+"gaby2.jpg" );image en cas de clic sur bouton
ResizeImage ( #image1 , 112*taille, 83*taille )
ResizeImage ( #image2 , 112*taille, 83*taille)
If OpenWindow ( #Window_0 , taillex, fenetre, posix, posiy, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" )
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ;fenetre toujours devant
Handle = WindowID (0)
If CreateGadgetList ( WindowID ())
ImageGadget ( #image_gadget1 , 2,34,100*taille,100*taille, UseImage ( #image1 ))
ButtonGadget ( #Button_8 , 42, 2, 60, 30, "visio" )
TextGadget (#TrackBar_10, 342,46,120, 30,"Niv. Transparence",#PB_Text_Center)
TrackBarGadget(#TrackBar_0, 342, 60, 120, 30, 25, 255)
SetGadgetState(#TrackBar_0, transparent)
; TextGadget (#TrackBar_20, 342,110,120, 30,"durée images",#PB_Text_Center)
; TrackBarGadget(#TrackBar_2, 342, 124, 120, 30, 25, 255)
; SetGadgetState(#TrackBar_2, delay)
StringGadget (#Path_0, 342, 180, 118, 24, chemin$)
ButtonGadget ( #Button_11 , 342, 194, 120, 20, "valider répertoire" )
EndIf
Repeat ;La boucle Repeat-Until sert à la gestion des évènements
SetWinTransparency ( WindowID (), transparent)
EventID.l= WaitWindowEvent () ; on récupère un évènement
Select EventID ; on sélectionne cet évènement
Case #PB_EventGadget ; cet évènement concerne une action sur un Gadget
Select EventGadgetID () ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé
Case #Button_8 ;visionneuse charge images
CreateThread(@AlertThread(), 154)
;***********************************************
;*** Examine le dossier et remplit Maliste() ***
;***********************************************
NewList Maliste.s()
If ExamineDirectory (0,chemin$,"*.*")
Repeat
Select NextDirectoryEntry()
Case 0
Break
Case 1
FileName$ = DirectoryEntryName()
FileExt$ = UCase(GetExtensionPart(FileName$))
If FindString("JPG,JPEG,BMP,PNG",FileExt$,1)
AddElement(Maliste())
Maliste() = FileName$
EndIf
EndSelect
ForEver
Else
MessageRequester("Erreur","impossible de créer la liste"+#LF$+"Veuillez reconfigurer les paramètres...")
EndIf
;**********************************
;*** Vérification de Maliste(x) ***
;**********************************
Compteur = CountList(Maliste())
If Compteur
; MessageRequester("Information",Str(Compteur)+" images chargées.")
Else
MessageRequester("Erreur","Aucune image chargée.")
End
EndIf
;*******************************************
;*** Affiche aléatoirement Maliste(x) ***
;*******************************************
SelectElement(Maliste(),Random(Compteur))
If LoadImage(#image0,chemin$+"\"+Maliste())
ResizeImage ( #image0 , 112*taille, 83*taille )
SetGadgetState(#image_gadget1,UseImage(#image0))
EndIf
EndSelect
Case #PB_Event_CloseWindow ; cet évènement concerne la fermeture de la fenêtre
Quit=1
EndSelect
Until Quit=1
EndIf
;
;
;
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
SetWindowLong_ (WinHandle, #GWL_EXSTYLE , GetWindowLong_ (WinHandle, #GWL_EXSTYLE ) | $00080000) ; #WS_EX_LAYERED = $00080000
If OpenLibrary (0, "user32.dll" )
CallFunction (0, "SetLayeredWindowAttributes" , WinHandle, 0, Transparency_Level, 2)
CloseLibrary (0)
EndIf
EndProcedure
Publié : lun. 30/janv./2006 16:16
par Backup
comtois a écrit :
Sinon , quand tu postes un code ça serait bien que tu utilises les balises Code
Edit ton post , et regarde en haut , il y a des boutons , dont un qui s'appelle code , tu sélectionnes ton programme et ensuite tu cliques sur Code , et oh joie , oh bonheur , ton post devient tout de suite plus lisible 
je me permet de le rendre plus lisible , parcequ'a priori , il a pas vu

désolé
Publié : lun. 30/janv./2006 16:43
par david
ne t'énerves pas mais je ne trouves pas le bouton code....
Publié : lun. 30/janv./2006 17:19
par Dr. Dri
Dans ce cas tu le fais manuellement...
Il faut mettre ton code purebasic entre des balises code
[/code]
Dri

Publié : lun. 30/janv./2006 17:29
par Chris
Le bouton "Code", il est au dessus de la fenêtre ou tu écris ton message, et dedans, il y a écrit.... "Code"
pb changement image
Publié : lun. 30/janv./2006 21:38
par david
j'ai bien trouvé le bouton merci
ci-après le code :
Code : Tout sélectionner
UseJPEGImageDecoder () ;***DECODEUR JPEG
UsePNGImageDecoder () ;
UseTGAImageDecoder () ;
UseTIFFImageDecoder () ;
;***********DECODE VARIABLES***********
chemin$="C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle"
a=0
textb=21
textb$=Str(textb)
taille=3
fenetre=tailley
transparent=75
taillex= 200
tailley = 200
posix = 200
posiy = 200
;
;
;
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Declare SetWinTransparency(WinHandle.l, Transparency_Level.l)
Global bouton,flag,Handle
;- Gadget Constants
;
Enumeration
#Window_0
#Button_1
#Button_2
#Button_3
#String_0
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#image_gadget1 ;arriere plan
#image1 ;gaby1
#image2 ;gaby2
#image0 ; image variable...
#TrackBar_0
#TrackBar_10
#TrackBar_2
#TrackBar_20
#Path_0
#Button_11
EndEnumeration
;
;
;************************************
;*** creation alerte timing *********
;************************************
Procedure AlertThread(Parameter)
Repeat
MessageRequester("Info", "Alert ("+Str(Parameter)+")", 0)
Delay(3000)
ForEver
EndProcedure
;************************************
;*** charge image programme *********
;************************************
LoadImage ( #image1 , path1$+"gaby1.jpg" ) ;image de depart
LoadImage ( #image2 , path2$+"gaby2.jpg" );image en cas de clic sur bouton
ResizeImage ( #image1 , 112*taille, 83*taille )
ResizeImage ( #image2 , 112*taille, 83*taille)
If OpenWindow ( #Window_0 , taillex, fenetre, posix, posiy, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" )
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ;fenetre toujours devant
Handle = WindowID (0)
If CreateGadgetList ( WindowID ())
ImageGadget ( #image_gadget1 , 2,34,100*taille,100*taille, UseImage ( #image1 ))
ButtonGadget ( #Button_8 , 42, 2, 60, 30, "visio" )
TextGadget (#TrackBar_10, 342,46,120, 30,"Niv. Transparence",#PB_Text_Center)
TrackBarGadget(#TrackBar_0, 342, 60, 120, 30, 25, 255)
SetGadgetState(#TrackBar_0, transparent)
; TextGadget (#TrackBar_20, 342,110,120, 30,"durée images",#PB_Text_Center)
; TrackBarGadget(#TrackBar_2, 342, 124, 120, 30, 25, 255)
; SetGadgetState(#TrackBar_2, delay)
StringGadget (#Path_0, 342, 180, 118, 24, chemin$)
ButtonGadget ( #Button_11 , 342, 194, 120, 20, "valider répertoire" )
EndIf
Repeat ;La boucle Repeat-Until sert à la gestion des évènements
SetWinTransparency ( WindowID (), transparent)
EventID.l= WaitWindowEvent () ; on récupère un évènement
Select EventID ; on sélectionne cet évènement
Case #PB_EventGadget ; cet évènement concerne une action sur un Gadget
Select EventGadgetID () ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé
Case #Button_8 ;visionneuse charge images
CreateThread(@AlertThread(), 154)
;***********************************************
;*** Examine le dossier et remplit Maliste() ***
;***********************************************
NewList Maliste.s()
If ExamineDirectory (0,chemin$,"*.*")
Repeat
Select NextDirectoryEntry()
Case 0
Break
Case 1
FileName$ = DirectoryEntryName()
FileExt$ = UCase(GetExtensionPart(FileName$))
If FindString("JPG,JPEG,BMP,PNG",FileExt$,1)
AddElement(Maliste())
Maliste() = FileName$
EndIf
EndSelect
ForEver
Else
MessageRequester("Erreur","impossible de créer la liste"+#LF$+"Veuillez reconfigurer les paramètres...")
EndIf
;**********************************
;*** Vérification de Maliste(x) ***
;**********************************
Compteur = CountList(Maliste())
If Compteur
; MessageRequester("Information",Str(Compteur)+" images chargées.")
Else
MessageRequester("Erreur","Aucune image chargée.")
End
EndIf
;*******************************************
;*** Affiche aléatoirement Maliste(x) ***
;*******************************************
SelectElement(Maliste(),Random(Compteur))
If LoadImage(#image0,chemin$+"\"+Maliste())
ResizeImage ( #image0 , 112*taille, 83*taille )
SetGadgetState(#image_gadget1,UseImage(#image0))
EndIf
EndSelect
Case #PB_Event_CloseWindow ; cet évènement concerne la fermeture de la fenêtre
Quit=1
EndSelect
Until Quit=1
EndIf
;
;
;
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
SetWindowLong_ (WinHandle, #GWL_EXSTYLE , GetWindowLong_ (WinHandle, #GWL_EXSTYLE ) | $00080000) ; #WS_EX_LAYERED = $00080000
If OpenLibrary (0, "user32.dll" )
CallFunction (0, "SetLayeredWindowAttributes" , WinHandle, 0, Transparency_Level, 2)
CloseLibrary (0)
EndIf
EndProcedure
si quelqu'un pouvait m'aider car je ne m'en sort vraiment pas.
je n'arrive pas a modifier AlertTread pour charger et afficher toutes les x secondes une image de ma liste en mémoire
Publié : lun. 30/janv./2006 21:48
par comtois
Il y a un autre bouton qu'il va falloir que tu trouves, c'est le bouton [Editer]

Publié : lun. 30/janv./2006 22:07
par Flype
tu as effectivement plusieurs erreurs dans ton code:
1/ NewList dans une boucle est proscrit, les listes étant 'globales' ont les créées une fois pour toute en haut du source.
2/ Relancer le CreateThread() à chaque clic sur le bouton n'est pas bon non plus.
3/ SetWinTransparency ( WindowID (), transparent) à chaque itération aussi est très gourmand en processeur parceque des évenements ta boucle en digère des centaines par secondes (mouvement de la souris par ex)
4/ Dans ton cas, je te conseille plus l'utilisation des Timers.
Code : Tout sélectionner
UseJPEGImageDecoder () ;***DECODEUR JPEG
UsePNGImageDecoder () ;
UseTGAImageDecoder () ;
UseTIFFImageDecoder () ;
;***********DECODE VARIABLES***********
chemin$="C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle"
a=0
textb=21
textb$=Str(textb)
taille=3
fenetre=tailley
transparent=75
taillex= 200
tailley = 200
posix = 200
posiy = 200
delay=1000
;
;
;
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Declare SetWinTransparency(WinHandle.l, Transparency_Level.l)
Global bouton,flag,Handle
;- Gadget Constants
;
Enumeration
#Window_0
#Button_1
#Button_2
#Button_3
#String_0
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#image_gadget1 ;arriere plan
#image1 ;gaby1
#image2 ;gaby2
#image0 ; image variable...
#TrackBar_0
#TrackBar_10
#TrackBar_2
#TrackBar_20
#Path_0
#Button_11
EndEnumeration
NewList Maliste.s()
;************************************
;*** charge image programme *********
;************************************
If OpenWindow ( #Window_0 , taillex, fenetre, posix, posiy, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" )
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ;fenetre toujours devant
Handle = WindowID (0)
If CreateGadgetList ( WindowID ())
ImageGadget ( #image_gadget1 , 2,34,100*taille,100*taille,0)
ButtonGadget ( #Button_8 , 42, 2, 60, 30, "visio" )
TextGadget (#TrackBar_10, 342,46,120, 20,"Niv. Transparence",#PB_Text_Center)
TrackBarGadget(#TrackBar_0, 342, 60, 120, 30, 25, 255)
SetGadgetState(#TrackBar_0, transparent)
TextGadget (#TrackBar_20, 342,110,120, 20,"durée images",#PB_Text_Center)
TrackBarGadget(#TrackBar_2, 342, 124, 120, 30, 25, 5000)
SetGadgetState(#TrackBar_2, delay)
StringGadget (#Path_0, 342, 180, 118, 24, chemin$)
ButtonGadget ( #Button_11 , 342, 194, 120, 20, "valider répertoire" )
EndIf
SetTimer_(WindowID(),1,delay,0)
Repeat ;La boucle Repeat-Until sert à la gestion des évènements
Select WaitWindowEvent () ; on sélectionne cet évènement
Case #WM_TIMER ; cet évènement concerne le timer
;*******************************************
;*** Affiche aléatoirement Maliste(x) ***
;*******************************************
If CountList(Maliste())
SelectElement(Maliste(),Random(Compteur))
If IsImage(#image0)
FreeImage(#image0)
EndIf
If LoadImage(#image0,chemin$+"\"+Maliste())
ResizeImage ( #image0 , 112*taille, 83*taille )
SetGadgetState(#image_gadget1,UseImage(#image0))
EndIf
EndIf
Case #PB_EventGadget ; cet évènement concerne une action sur un Gadget
Select EventGadgetID () ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé
Case #TrackBar_0
transparent = GetGadgetState(#TrackBar_0)
SetGadgetText(#TrackBar_10,"Transparence: "+Str(transparent)+"/255")
SetWinTransparency(WindowID(),transparent)
Case #TrackBar_2
delay = GetGadgetState(#TrackBar_2)
SetGadgetText(#TrackBar_20,"Intervalle: "+Str(delay)+" ms")
KillTimer_(WindowID(),1)
SetTimer_(WindowID(),1,delay,0)
Case #Button_8 ;visionneuse charge images
;***********************************************
;*** Examine le dossier et remplit Maliste() ***
;***********************************************
ClearList(Maliste())
If ExamineDirectory (0,chemin$,"*.*")
Repeat
Select NextDirectoryEntry()
Case 0
Break
Case 1
FileName$ = DirectoryEntryName()
FileExt$ = UCase(GetExtensionPart(FileName$))
If FindString("JPG,JPEG,BMP,PNG",FileExt$,1)
AddElement(Maliste())
Maliste() = FileName$
EndIf
EndSelect
ForEver
Else
MessageRequester("Erreur","impossible de créer la liste"+#LF$+"Veuillez reconfigurer les paramètres...")
EndIf
;**********************************
;*** Vérification de Maliste(x) ***
;**********************************
Compteur = CountList(Maliste())
If Compteur
MessageRequester("Information",Str(Compteur)+" images chargées.")
Else
MessageRequester("Erreur","Aucune image chargée.")
EndIf
EndSelect
Case #PB_Event_CloseWindow ; cet évènement concerne la fermeture de la fenêtre
Quit=1
EndSelect
Until Quit=1
EndIf
;
KillTimer_(WindowID(),1)
;
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
SetWindowLong_ (WinHandle, #GWL_EXSTYLE , GetWindowLong_ (WinHandle, #GWL_EXSTYLE ) | $00080000) ; #WS_EX_LAYERED = $00080000
If OpenLibrary (0, "user32.dll" )
CallFunction (0, "SetLayeredWindowAttributes" , WinHandle, 0, Transparency_Level, 2)
CloseLibrary (0)
EndIf
EndProcedure