Page 1 sur 1

Clip

Publié : jeu. 12/juil./2007 23:21
par Droopy
Ce programme permet de visualiser des vidéos. (Il s'adresse à de jeunes enfants)
Les clips étant stockés dans un répertoire, on spécifie ce répertoire en paramètre.
J'utilise Media Player Classic pour visualiser les vidéos et sauvegarder une image par clip.
On extrait donc une image par clip au format jpg
Exemple pour un clip nommé : SuperClip.avi
On génèrera dans le même dossier grace à Media Player Classic 'SuperClip.avi.jpg'
Voili voila

Code : Tout sélectionner

;/ PureBasic 4.10beta2 : 12/07/07
; Spécifier en ligne de commande le chemin vers les vidéos
; enregistrer les images sous le format jpg avec ajout d'extension
; ex: toto.flv -> toto.flv.jpg

Dossier.s=ProgramParameter()
If FileSize(Dossier)<>-2
  MessageRequester("Erreur Dossier ",Dossier+" introuvable")
  End
EndIf

UseJPEGImageDecoder()
#Largeur=1024
#LargeurImage=240
#HauteurImage=180
#StatusBar=3000



Procedure.l SearchDirectory(dir$, yourLinkedList.s(), pattern$="", recursive=1) 
  Static level.l=-1 
  If Not Right(dir$, 1) = "\" 
    dir$+"\" 
  EndIf 
  Protected dir.l=ExamineDirectory(#PB_Any, dir$, pattern$) 
  If dir 
    While NextDirectoryEntry(dir) 
      If DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".." 
        AddElement(yourLinkedList()) 
        For n=CountString(dir$, "\")-level To CountString(dir$, "\") 
          yourLinkedList()+StringField(dir$, n, "\")+"\" 
        Next 
        yourLinkedList()+DirectoryEntryName(dir) 
        If DirectoryEntryType(dir) = #PB_DirectoryEntry_Directory 
          yourLinkedList()+"\" 
        EndIf 
      EndIf 
    Wend 
    FinishDirectory(dir) 
  EndIf 
  Protected all.l=ExamineDirectory(#PB_Any, dir$, "") 
  If all 
    While NextDirectoryEntry(all) 
      If DirectoryEntryType(all) = #PB_DirectoryEntry_Directory And DirectoryEntryName(all) <> "." And DirectoryEntryName(all) <> ".." 
        level+1 
        SearchDirectory(dir$+DirectoryEntryName(all)+"\", yourLinkedList(), pattern$, recursive) 
        level-1 
      EndIf 
    Wend 
    FinishDirectory(all) 
  EndIf 
  ProcedureReturn CountList(yourLinkedList()) 
EndProcedure

Procedure.s SupprimeExtension(Fichier.s) ; Renvoie rien si le fichier n'existe pas
  Fichier.s=Left(Fichier,Len(Fichier)-4)
  If FileSize(Fichier)=-1
    ProcedureReturn
  Else
    ProcedureReturn Fichier
  EndIf
EndProcedure

OpenWindow(0,0,0, #Largeur,#HauteurImage+80,"CLIPS",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0))
CreateStatusBar(#StatusBar,WindowID(0))
NewList Images.s()

NbImages=SearchDirectory(Dossier, Images(), "*.jpg", 1)
ForEach Images()
  Images()=Dossier+Images()
Next

ScrollAreaGadget(#PB_Any, 10, 10, #Largeur-20,#HauteurImage+40,(NbImages+1)*#LargeurImage,#HauteurImage+40,1)

ForEach Images()
  id=LoadImage(#PB_Any,Images())
  ResizeImage(id,#LargeurImage,#HauteurImage)
  If id
    Video.s=SupprimeExtension(Images())
    If Video<>""
      ButtonImageGadget(n,n*#LargeurImage+10*n,10,#LargeurImage,#HauteurImage,ImageID(id))
      GadgetToolTip(n,StringField(GetFilePart(Images()),1,"."))
      n+1
    Else
      MessageRequester("Suppression",Images())
      DeleteElement(Images(),1)
    EndIf
    
  EndIf
Next
CloseGadgetList() 

Repeat 
  evt=WaitWindowEvent()
  If evt=#PB_Event_Gadget And EventType()=#PB_EventType_LeftClick
    Bouton=EventGadget()
    If Bouton=<CountList(Images())
      
      
      SelectElement(Images(),Bouton)
      StatusBarText(#StatusBar,0,SupprimeExtension(Images()))
      RunProgram(SupprimeExtension(Images()))
    EndIf
  EndIf
Until evt=#PB_Event_CloseWindow