Renommage de fichier et rééchantillonage image

Programmation d'applications complexes
kwandjeen
Messages : 204
Inscription : dim. 16/juil./2006 21:44

Renommage de fichier et rééchantillonage image

Message par kwandjeen »

J'avais fait un soft pour faire des renommages et rééchantillonage rapidement suite à des screenshoot en chaine.

Vous pouvez choisir les fichiers à renommer, si ce sont des images établir une conversion avec un aperçu image mais je vous laisse découvrir.

Comme la plupart de mes trucs c'est pas fini lol

Code : Tout sélectionner


;- constantes window

Enumeration
  #window_0
  #fenetre_efface
  #fenetre_info
  #fenetre_progression
EndEnumeration

;- constantes menu
;
Enumeration
  #Master_menu
EndEnumeration

Enumeration
  #MENU_quitter
  #MENU_aide
  #MENU_credit
EndEnumeration

;- constantes gadget
;
Enumeration
  #frame_fichier
  #explorer
  #Bouton_all
  #Bouton_deselect
  #Check_filtre
  #Combo_extention
  #Liste_fichier
  #Frame_renommer
  #valid_rename
  #label_renommer
  #check_compteur1  
  #Check_prefixe
  #Check_nom  
  #Check_suffixe  
  #Check_compteur2
  
  #entry_prefixe
  #Text_prefixe_rename
  #entry_nom
  #Text_nom_rename
  #entry_suffixe  
  #Text_suffixe_rename
    
  #Frame_apercu
  #Frame_resize
  #Check_resize
  #Text_reechantillonage
  #Frame_sortie
  #Check_bmp
  #Check_jpeg
  #Check_png
  #Frame_taille
  #choix_taille
  #Text_rapport
  #check_rapport
  #bar_compression
  #indice_compression
  #Bouton_lancer
  #Frame_chemin
  #Bouton_parcourir
  #entry_chemin
  #chaine_resultat
  #Text_resultat
  #Image_apercu
  #Image_sous_menu
  #Frame_lancer
  #text_copie
  #check_copie
  
  #Info_efface
  #Bouton_efface_oui
  #Bouton_efface_tous
  #Bouton_efface_non
  
  #Text_info_1
  #Text_info_version
  #Text_info_2
  #Text_info_3
  #Text_info_4
  #lien_web
  #button_info_ok
  
  #label_temps_ecoule
  #Text_fichier_traite
  #Bouton_ok_progression
  #Bouton_arret_progression
  #Text_temps_ecoule
  
EndEnumeration


Global FontID1
FontID1 = LoadFont(2, "arial", 22)

;- Image Globals
Global Image_sous_menu = 9002
Global Image_fond_apercu = 9000
Global image_apercu = 9001
Global image_affiche = 9003
Global selection_chemin = 0
Global first_warning_copie = 3
Global choix_format_image = 0

Structure fichier
chemin.s
fichier.s
extention.s
EndStructure

Global NewList liste_tampon.fichier()
Global NewList liste.fichier()
Global dossier_save.s = "c:\"
Global chemin_fichier.s
Global nom_fichier.s
Global taillex.l
Global tailley.l
Global rename.s
Global temps.l
Global tempo_nom.s

UseTIFFImageDecoder()
UseTGAImageDecoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UsePNGImageDecoder()
UsePNGImageEncoder()
;- Catch Images
Image_sous_menu = CatchImage(0, ?Image_sous_menu)
CreateImage(Image_fond_apercu,350,220)
  StartDrawing(ImageOutput(image_fond_apercu))
    Box(0,0,350,220,RGB(195,200,200))
  StopDrawing()
  
CreateImage(image_affiche,350,220)
;- Images
DataSection
extend:
Data.s "bmp","doc","jpg","mp3","png","tga","tif","wav"
Image_sous_menu:
  ;IncludeBinary ""
EndDataSection
;----- declaration des macros et procedures
Macro active_gadget(dep,fin,valid)
  For i=dep To fin
    DisableGadget(i,valid)
  Next
EndMacro

Macro traitement_fichier()
lenom$ = construction_nom(i,compteur_chaine)
  If GetGadgetState(#check_copie)
    While ReadFile(4,dossier_save+lenom$+"."+liste()\extention)
      CloseFile(4)
      lenom$ = lenom$ + "_copie"
    Wend
    CopyFile(chemin_fichier+nom_fichier, dossier_save+lenom$+"."+liste()\extention)
      
  Else
    If ReadFile(7, dossier_save+lenom$+"."+liste()\extention)
      CloseFile(7)
      If first_warning_copie = 3 Or first_warning_copie < 2  
        first_warning_copie = gestion_fenetre_efface(lenom$+"."+liste()\extention)
      EndIf 
      If first_warning_copie > 0
        RenameFile(chemin_fichier+nom_fichier, dossier_save+lenom$+"."+liste()\extention)
      EndIf
    Else
      RenameFile(chemin_fichier+nom_fichier, dossier_save+lenom$+"."+liste()\extention)
    EndIf
  EndIf 

EndMacro

Procedure Open_fenetre_info()
  If OpenWindow(#fenetre_info, 216, 0, 300, 300, "Crédit",  #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#fenetre_info))
      TextGadget(#Text_info_1, 100, 25, 95, 40, "FRIZE", #PB_Text_Center)
      GadgetToolTip(#Text_info_1, "FRIZE")
      SetGadgetFont(#Text_info_1, FontID1)
      TextGadget(#Text_info_version, 195, 40, 30, 20, "v 2.1")
      TextGadget(#Text_info_2, 10, 80, 280, 30, "FRIZE , all the provided tools and components are copyrighted (c) 2006 by Kwandjeen Studio.", #PB_Text_Center)
      TextGadget(#Text_info_3, 10, 130, 280, 40, "FRIZE , copyright (c) Kwandjeen Studio tous droits toutes destinations.", #PB_Text_Center)
      TextGadget(#Text_info_4, 35, 180, 230, 40, "Un grand merci à Yannick Desprez pour ses tests et son soutien.", #PB_Text_Center)
      HyperLinkGadget(#lien_web, 90, 220,280,20,"http://www.kwandjeen.fr", RGB(0,0,255), #PB_HyperLink_Underline) 
      ButtonGadget(#Button_info_ok, 100, 260, 100, 30, "OK")
    EndIf
  EndIf
  StickyWindow(#fenetre_info, 1)
  DisableWindow(#window_0,1)
  action.s = ""
  Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget
    Select EventGadget()
    Case #lien_web
         ShellExecute_(0,"open","http:\\www.kwandjeen.fr","","",#SW_SHOWNORMAL)
        ;chemin_programfiles.s = folderprogramfiles()
        ;RunProgram(chemin_programfiles+"Internet Explorer\IEXPLORE.EXE" , "http://www.kwandjeen.fr", "")
    Case #button_info_ok
      CloseWindow(#fenetre_info)
      DisableWindow(#window_0,0)
      SetActiveWindow(#window_0)
      action = "fermeture"
      EndSelect
    EndIf
  Until action = "fermeture" 
EndProcedure

Procedure fenetre_progression()
  If OpenWindow(#fenetre_progression, 230, 9, 250, 100, "Progression",  #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#fenetre_progression))
      TextGadget(#label_temps_ecoule, 50, 8, 80, 20, "Temps écoulé :")
      TextGadget(#Text_fichier_traite, 15, 30, 235, 40, "fichier", #PB_Text_Center)
      ButtonGadget(#Bouton_ok_progression, 170, 70, 60, 20, "OK")
      ButtonGadget(#Bouton_arret_progression, 90, 70, 60, 20, "Arreter")
      TextGadget(#Text_temps_ecoule, 140, 8, 90, 20, "00 : 00")
      DisableGadget(#bouton_ok_progression,1)
    EndIf
  EndIf
EndProcedure

Procedure fenetre_efface()
  If OpenWindow(#fenetre_efface, 210, 0, 300, 100, "Attention",#PB_Window_ScreenCentered | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#fenetre_efface))
      TextGadget(#Info_efface, 30, 20, 240, 40, "Le fichier xx sera écrasé voulez vous continuer ?", #PB_Text_Center)
      ButtonGadget(#Bouton_efface_oui, 10, 70, 80, 20, "Oui")
      ButtonGadget(#Bouton_efface_tous, 110, 70, 80, 20, "Oui (pour tous)")
      ButtonGadget(#Bouton_efface_non, 210, 70, 80, 20, "Non")
      
    EndIf
  EndIf
EndProcedure



Procedure fenetre_principale()
  If OpenWindow(#window_0, 209, 8, 810, 604, "FRIZE 2.1 --- KWANDJEEN Studio --- 2006",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#Master_menu, WindowID(#window_0))
      MenuTitle("FRIZE")
      MenuItem(#MENU_quitter, "Quitter")
      MenuTitle("?")
      MenuItem(#MENU_aide, "Aide")
      MenuBar()
      MenuItem(#MENU_credit, "Crédit")
      EndIf

      If CreateGadgetList(WindowID(#window_0))
        Frame3DGadget(#Frame_fichier, 10, 10, 400, 510, "Sélection des fichiers")
        ExplorerTreeGadget(#Explorer, 20, 30, 170, 480, "", #PB_Explorer_NoFiles)
        ListViewGadget(#Liste_fichier, 200, 60, 200, 420,#PB_ListView_Multiselect|#PB_ListView_Clickselect)
        ButtonGadget(#Bouton_all, 210, 30, 80, 20, "Tout select.")
        ButtonGadget(#Bouton_deselect, 310, 30, 80, 20, "Déselect.")
        CheckBoxGadget(#Check_filtre, 230, 490, 50, 20, "Filtre")
        ComboBoxGadget(#Combo_extention, 310, 490, 60, 200)
        Restore extend
        For i=1 To 8
          Read extend$
          AddGadgetItem(#Combo_extention,-1,extend$)
        Next
        SetGadgetState(#Combo_extention,0) 
        Frame3DGadget(#Frame_renommer, 420, 10, 370, 170, "Renommer")
        CheckBoxGadget(#valid_rename, 430, 30, 80, 20, "Renommer")
        CheckBoxGadget(#Check_compteur1, 430, 60, 71, 20, "compteur +")
        CheckBoxGadget(#Check_prefixe, 506, 60, 58, 20, "préfixe +")
        CheckBoxGadget(#Check_nom, 567, 60, 52, 20, "nom +")
        CheckBoxGadget(#Check_suffixe, 621, 60, 60, 20, "suffixe +")
        CheckBoxGadget(#Check_compteur2, 683, 60, 70, 20, "compteur")
        StringGadget(#entry_nom, 440, 90, 150, 20, "")
        StringGadget(#entry_prefixe, 440, 120, 150, 20, "")
        StringGadget(#entry_suffixe, 440, 150, 150, 20, "")
        TextGadget(#Text_nom_rename, 600, 93, 140, 20, "Nom des fichiers renommés")
        TextGadget(#Text_prefixe_rename, 600, 123, 140, 20, "Préfixe ajouté au début")
        TextGadget(#Text_suffixe_rename, 600, 153, 140, 20, "Suffixe ajouté en fin")
        StringGadget(#chaine_resultat, 600, 30, 180, 20, "fichier_copie", #PB_String_ReadOnly)
        TextGadget(#Text_resultat, 555, 34, 42, 16, "Résultat")
        Frame3DGadget(#frame_chemin, 10, 524, 400, 50, "Dossier de sortie")
        ButtonGadget(#Bouton_parcourir, 315, 543, 80, 20, "Parcourir")
        StringGadget(#entry_chemin, 20, 543, 280, 20, "")
        Frame3DGadget(#Frame_apercu, 420, 185, 370, 245, "Aperçu image sélectionnée")
        Frame3DGadget(#Frame_lancer, 700, 490, 90, 84, "Execution")
        CheckBoxGadget(#Check_copie, 715, 512, 50, 20, "Copie")
        GadgetToolTip(#check_copie,"Copie ou remplace les fichiers pour un même dossier")
        SetGadgetState(#check_copie,1)
        ButtonGadget(#Bouton_lancer, 710, 543, 70, 20, "Lancer")
        Frame3DGadget(#Frame_resize, 420, 434, 270, 140, "Rééchantillonnage")
        CheckBoxGadget(#Check_resize, 430, 460, 110, 20, "Rééchantillonnage")
        Frame3DGadget(#Frame_sortie, 430, 500, 250, 62, "Format de sortie")
        CheckBoxGadget(#Check_bmp, 440, 530, 45, 20, "BMP")
        CheckBoxGadget(#Check_jpeg, 580, 510, 45, 20, "JPEG")
        CheckBoxGadget(#Check_png, 500, 530, 45, 20, "PNG")
        TrackBarGadget(#bar_compression, 553, 530, 90, 20, 1, 10, #PB_TrackBar_Ticks)
        SetGadgetState(#bar_compression, 8)
        DisableGadget(#bar_compression, 1)
        TextGadget(#indice_compression, 650, 530, 20, 16,  Str(GetGadgetState(#bar_compression)), #PB_Text_Center | #PB_Text_Border)
        Frame3DGadget(#Frame_taille, 550, 445, 130, 52, "Taille")
        ComboBoxGadget(#choix_taille, 560, 468, 70, 300)
        AddGadgetItem(#choix_taille, -1, "Original")
        AddGadgetItem(#choix_taille, -1, "320*200")
        AddGadgetItem(#choix_taille, -1, "320*240")
        AddGadgetItem(#choix_taille, -1, "640*480")
        AddGadgetItem(#choix_taille, -1, "800*600")
        AddGadgetItem(#choix_taille, -1, "1024*768")
        AddGadgetItem(#choix_taille, -1, "1152*864")
        AddGadgetItem(#choix_taille, -1, "1280*720")
        AddGadgetItem(#choix_taille, -1, "1280*768")
        AddGadgetItem(#choix_taille, -1, "1280*960")
        AddGadgetItem(#choix_taille, -1, "1280*1024")
        AddGadgetItem(#choix_taille, -1, "1400*1050")
        AddGadgetItem(#choix_taille, -1, "1600*900")
        AddGadgetItem(#choix_taille, -1, "1600*1200")
        SetGadgetState(#choix_taille, 0)
        CheckBoxGadget(#Check_rapport, 647, 475, 16, 16, "")
        GadgetToolTip(#check_rapport,"conserve les proportions de l'image, pas de déformation")
        TextGadget(#Text_rapport, 635, 457, 39, 15, "Rapport")
        ImageGadget(#Image_apercu, 430, 200, 350, 220, Image0)
        ImageGadget(#Image_sous_menu, 0, 0, 800, 2, Image1)
        active_gadget(#check_compteur1,#Text_suffixe_rename,1)
        active_gadget(#frame_sortie,#indice_compression,1)
        SetGadgetState(#Image_apercu,ImageID(image_fond_apercu))
      EndIf
    EndIf
EndProcedure

Procedure gestion_fenetre_efface(nom$)
HideWindow(#fenetre_efface,0)
fin = 0
SetGadgetText(#Info_efface,"Le fichier "+nom$+" sera écrasé voulez vous continuer ?")
Repeat
  event = WaitWindowEvent(#fenetre_efface)  
  If event = #PB_Event_Gadget
    Select EventGadget()
      Case #Bouton_efface_oui
        validation = 1 : fin = 1
      Case #Bouton_efface_tous
        validation = 2 : fin = 1
      Case #Bouton_efface_non
        validation = 0 : fin = 1
    EndSelect
  EndIf
Until fin = 1
HideWindow(#fenetre_efface,1)
SetActiveWindow(#fenetre_progression)
ProcedureReturn validation
EndProcedure

Procedure.s construction_nom(id.l,count.s)
  chaine1$ = ""
  chaine2$ = ""
  chaine3$ = ""
  chaine4$ = ""
  chaine5$ = ""
  longueur = Len(GetGadgetItemText(#liste_fichier,id,0))-4
  nom_fichier$ = Left(GetGadgetItemText(#liste_fichier,id,0),longueur)
  If GetGadgetState(#check_copie)
    nom_fichier$ = nom_fichier$ + "_copie"
  EndIf
  If GetGadgetState(#valid_rename)
    If GetGadgetState(#check_compteur1)
      nom_fichier$ = Left(nom_fichier$,longueur)
      chaine1$ = count
    EndIf
    If GetGadgetState(#Check_compteur2)
      nom_fichier$ = Left(nom_fichier$,longueur)  
      chaine5$ = count
    EndIf
    If GetGadgetState(#Check_prefixe)
      nom_fichier$ = Left(nom_fichier$,longueur)
      chaine2$ = GetGadgetText(#entry_prefixe)
    EndIf
    If GetGadgetState(#Check_suffixe)
      nom_fichier$ = Left(nom_fichier$,longueur)
      chaine4$ = GetGadgetText(#entry_suffixe)
    EndIf    
    If GetGadgetState(#Check_nom)
      nom_fichier$ = ""
      chaine3$ = GetGadgetText(#entry_nom)
    EndIf
  EndIf
  chaine3$ = nom_fichier$+chaine3$
  nom_final$ = chaine1$+chaine2$+chaine3$+chaine4$+chaine5$
  ProcedureReturn nom_final$
EndProcedure

Procedure apercu_nom()
index = GetGadgetState(#liste_fichier)
If index>0
  name$ = construction_nom(index,"001") 
  SetGadgetText(#chaine_resultat,name$)
EndIf

EndProcedure

Procedure apercu_image()
index = GetGadgetState(#liste_fichier)
ext_im$ =LCase(Right(GetGadgetItemText(#liste_fichier,index,0),3))
If ext_im$ = "bmp" Or ext_im$ = "tif" Or ext_im$ = "jpg" Or ext_im$ = "png" Or ext_im$ = "tga"
   LoadImage(image_apercu,GetGadgetText(#explorer)+GetGadgetItemText(#liste_fichier,index,0))
    sizex = ImageWidth(image_apercu)
    sizey = ImageHeight(image_apercu)
    rapsizex.f = sizex/350
    rapsizey.f = sizey/220
    If rapsizex > rapsizey
      resizex = sizex/rapsizex
      resizey = sizey/rapsizex
    Else
      resizex = sizex/rapsizey
      resizey = sizey/rapsizey
    EndIf
    
    ResizeImage(image_apercu,resizex,resizey)
    ;StartDrawing(ImageOutput(image_apercu))
      ;DrawText(10, 10, Str(sizex)+" X "+Str(sizey))
    ;StopDrawing()  
    StartDrawing(ImageOutput(image_affiche))
      Box(0, 0, 350, 220 ,RGB(200,205,205))
      DrawImage(ImageID(image_apercu),(350-resizex)/2,(220-resizey)/2)
      DrawText(10, 10, Str(sizex)+" X "+Str(sizey))
    StopDrawing()
    SetGadgetState(#Image_apercu,ImageID(image_affiche))
Else
  SetGadgetState(#Image_apercu,ImageID(image_fond_apercu))
EndIf
EndProcedure

Procedure format_image(numero.l,i.l,count.s)
result_test = 0
  LoadImage(numero, liste()\chemin+liste()\fichier)
  If GetGadgetState(#check_rapport)
    largeur_image = ImageWidth(numero)
    hauteur_image = ImageHeight(numero)
    rapportx.f = largeur_image/Taillex
    rapporty.f = hauteur_image/tailley
    If rapportx > rapporty
      taillex = largeur_image/rapportx
      tailley = hauteur_image/rapportx
    Else
      taillex = largeur_image/rapporty
      tailley = hauteur_image/rapporty
    EndIf
  EndIf
  If taillex > 0  
    ResizeImage(numero,taillex,tailley)
  EndIf 
  lenom$ = construction_nom(i,count)
  
  If GetGadgetState(#check_copie) ;*************************************
    If GetGadgetState(#Check_bmp)
      While ReadFile(4,dossier_save+lenom$+".bmp")
        CloseFile(4)
        lenom$ = lenom$ + "_copie"
      Wend
      SaveImage(numero, dossier_save+lenom$+".bmp" ,#PB_ImagePlugin_BMP)
    EndIf   
  
    If GetGadgetState(#Check_jpeg)
      While ReadFile(4,dossier_save+lenom$+".jpg")
        CloseFile(4)
        lenom$ = lenom$ + "_copie"
      Wend    
      SaveImage(numero, dossier_save+lenom$+".jpg" ,#PB_ImagePlugin_JPEG,GetGadgetState(#bar_compression))
    EndIf
  
    If GetGadgetState(#Check_png) 
      While ReadFile(4,dossier_save+lenom$+".png")
        CloseFile(4)
        lenom$ = lenom$ + "_copie"
      Wend
        SaveImage(numero, dossier_save+lenom$+".png" ,#PB_ImagePlugin_PNG)    
    EndIf
  Else
    If GetGadgetState(#Check_bmp)
      ;If ReadFile(4,dossier_save+lenom$+".bmp") And GetGadgetState(#check_copie)
        ;CloseFile(4)
        ;lenom$ = lenom$ + "_copie"
      ;EndIf
  
      If ReadFile(3, dossier_save+lenom$+".bmp")
        CloseFile(3)
        If first_warning_copie = 3 Or first_warning_copie < 2  
          first_warning_copie = gestion_fenetre_efface(lenom$+".bmp")
        EndIf 
        If first_warning_copie > 0
          DeleteFile(dossier_save+lenom$+".bmp")
          SaveImage(numero, dossier_save+lenom$+".bmp" ,#PB_ImagePlugin_BMP)
        EndIf
      Else
        SaveImage(numero, dossier_save+lenom$+".bmp" ,#PB_ImagePlugin_BMP)
      EndIf    
    EndIf
  
    If GetGadgetState(#Check_jpeg)
      ;If ReadFile(4,dossier_save+lenom$+".jpg") And GetGadgetState(#check_copie)
        ;CloseFile(4)
        ;lenom$ = lenom$ + "_copie"
      ;EndIf
      If ReadFile(3, dossier_save+lenom$+".jpg")
        CloseFile(3)  
        If first_warning_copie = 3 Or first_warning_copie < 2 
          first_warning_copie = gestion_fenetre_efface(lenom$+".jpg")
        EndIf
        If first_warning_copie > 0
          DeleteFile(dossier_save+lenom$+".jpg")
          SaveImage(numero, dossier_save+lenom$+".jpg" ,#PB_ImagePlugin_JPEG,GetGadgetState(#bar_compression))
        EndIf
      Else
        SaveImage(numero, dossier_save+lenom$+".jpg" ,#PB_ImagePlugin_JPEG,GetGadgetState(#bar_compression))
      EndIf  
    EndIf
  
    If GetGadgetState(#Check_png) 
      ;If ReadFile(4,dossier_save+lenom$+".png") And GetGadgetState(#check_copie)
        ;CloseFile(4)
        ;lenom$ = lenom$ + "_copie"
      ;EndIf
      If ReadFile(3, dossier_save+lenom$+".png")
        CloseFile(3)  
        If first_warning_copie = 3 Or first_warning_copie < 2 
          first_warning_copie = gestion_fenetre_efface(lenom$+".png")
        EndIf
        If first_warning_copie > 0
          DeleteFile(dossier_save+lenom$+".png")
          SaveImage(numero, dossier_save+lenom$+".png" ,#PB_ImagePlugin_PNG)
        EndIf
      Else
        SaveImage(numero, dossier_save+lenom$+".png" ,#PB_ImagePlugin_PNG)
      EndIf    
    EndIf
  EndIf ;******************************************
  FreeImage(numero)
EndProcedure

Procedure contenu_dossier()
chemin_dossier$ = GetGadgetText(#explorer)
ClearList(liste_tampon())
If ExamineDirectory(0,chemin_dossier$,"*.*")
  While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        If GetGadgetState(#Check_filtre)
          If GetGadgetText(#Combo_extention) = GetExtensionPart(DirectoryEntryName(0))
            AddElement(liste_tampon())
            liste_tampon()\chemin = chemin_dossier$
            liste_tampon()\fichier = DirectoryEntryName(0)
            liste_tampon()\extention = GetExtensionPart(DirectoryEntryName(0))
          EndIf 
        Else
          AddElement(liste_tampon())
          liste_tampon()\chemin = chemin_dossier$
          liste_tampon()\fichier = DirectoryEntryName(0)
          liste_tampon()\extention = GetExtensionPart(DirectoryEntryName(0))
        EndIf 
      EndIf
  Wend
    FinishDirectory(0)
EndIf
FirstElement(liste_tampon())
ClearGadgetItemList(#liste_fichier)
ForEach liste_tampon()
  AddGadgetItem(#Liste_fichier,-1,liste_tampon()\fichier)
Next

EndProcedure

Procedure execution()
temps_depart = ElapsedMilliseconds()
If Right(dossier_save,1) <> "\"
  dossier_save = dossier_save+"\"
EndIf
If ExamineDirectory(255, dossier_save,"")
  If GetGadgetState(#Check_resize)
    Select GetGadgetState(#choix_taille)
      Case 0
        taillex = 0 : tailley = 0
      Case 1
        taillex = 320 : tailley = 200
      Case 2
        taillex = 320 : tailley = 240
      Case 3
        taillex = 640 : tailley = 480
      Case 4
        taillex = 800 : tailley = 600
      Case 5
        taillex = 1024 : tailley = 768  
      Case 6
        taillex = 1152 : tailley = 864
      Case 7
        taillex = 1280 : tailley = 720
      Case 8
        taillex = 1280 : tailley = 768
      Case 9
        taillex = 1280 : tailley = 960
      Case 10
        taillex = 1280 : tailley = 1024
      Case 11
        taillex = 1400 : tailley = 1050
      Case 12
        taillex = 1600 : tailley = 900
      Case 13
        taillex = 1600 : tailley = 1200
    EndSelect
  EndIf
 HideWindow(#fenetre_progression,0)
 DisableGadget(#Bouton_ok_progression,1)
 DisableGadget(#Bouton_arret_progression,0)
 DisableWindow(#window_0,1)
 minute$ = "00"
 seconde$ = "00"
  compteur = 0
  ClearList(liste())
  ;il faut modifier ici avec la sélection du chemin et du nom fichier dans la liste tampon
  For i=0 To CountGadgetItems(#Liste_fichier)-1
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      Select EventGadget()
        Case #Bouton_arret_progression
          HideWindow(#fenetre_progression,1)
          DisableWindow(#window_0,0)
          SetActiveWindow(#window_0)
          FinishDirectory(255)
          contenu_dossier()
          apercu_nom()
          Goto boucle_principale         
      EndSelect
    EndIf
      If GetGadgetItemState(#Liste_fichier, i)
        SelectElement(liste_tampon(), i)
        compteur+1
        chemin_fichier = liste_tampon()\chemin
        nom_fichier = liste_tampon()\fichier 
        SetGadgetText(#Text_fichier_traite,chemin_fichier+nom_fichier)
        compteur_chaine.s = Right("000"+Str(compteur),3)
        AddElement(liste())
          liste()\chemin = chemin_fichier
          liste()\fichier = nom_fichier
          liste()\extention =liste_tampon()\extention
          
            If GetGadgetState(#Check_resize)
                If liste()\extention = "bmp" Or liste()\extention = "jpg" Or liste()\extention = "tga" Or liste()\extention = "tif" Or liste()\extention = "png"
                  format_image(compteur,i,compteur_chaine)
                Else
                  traitement_fichier()
                EndIf
            Else
                traitement_fichier()
            EndIf
          
      EndIf 
    temps_ecoule = ElapsedMilliseconds()-temps_depart
    minute$ = Str((temps_ecoule/1000)/60)
    seconde$ = Str((temps_ecoule/1000)-(60*Val(minute$)))
    SetGadgetText(#Text_temps_ecoule,minute$+" : "+seconde$)
  Next
  Delay(2000)
  SetGadgetText(#Text_fichier_traite,"Opérations terminées")
  DisableGadget(#Bouton_ok_progression,0)
  DisableGadget(#Bouton_arret_progression,1)
Else
        MessageRequester("Problème","Le dossier de destination n'existe pas",#PB_MessageRequester_Ok)
EndIf
action.s = ""
Repeat
  Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      Select EventGadget()
        Case #Bouton_ok_progression
          HideWindow(#fenetre_progression,1)
          DisableWindow(#window_0,0)
          SetActiveWindow(#window_0)
          action = "fermeture"
      EndSelect
    EndIf
  Until action = "fermeture"
FinishDirectory(255)
contenu_dossier()
apercu_nom()
first_warning_copie = 3
SetGadgetText(#Text_fichier_traite,"")
EndProcedure


;----- boucle principale
fenetre_efface()
HideWindow(#fenetre_efface,1)
fenetre_progression()
HideWindow(#fenetre_progression,1)
fenetre_principale()

boucle_principale:
Repeat
  event =WaitWindowEvent()
  If event = #PB_Event_Menu
    Select EventMenu()  
      Case #menu_quitter
        End
      Case #MENU_credit
        open_fenetre_info()
    EndSelect
  EndIf    
        
  If Event = #PB_Event_Gadget

    Select EventGadget()
      Case #Bouton_all
        For i=0 To CountGadgetItems(#Liste_fichier)-1
          SetGadgetItemState(#Liste_fichier, i, 1)
        Next 
      Case #Bouton_deselect
        For i=0 To CountGadgetItems(#Liste_fichier)-1
          SetGadgetItemState(#Liste_fichier, i, 0)
          SetGadgetState(#Image_apercu,ImageID(image_fond_apercu))
        Next
      Case #Check_filtre
        contenu_dossier()
        apercu_nom()
      Case #Combo_extention
        contenu_dossier()
        apercu_nom()
      Case #explorer
        If selection_chemin = 0
          dossier_save = GetGadgetText(#explorer)
          SetGadgetText(#entry_chemin,dossier_save)
        EndIf
        contenu_dossier()
        apercu_nom()
      Case #Liste_fichier
        apercu_nom()
        apercu_image()
      Case #valid_rename
        If GetGadgetState(#valid_rename)
          active_gadget(#check_compteur1,#check_compteur2,0) 
          If GetGadgetState(#Check_prefixe)
            active_Gadget(#entry_prefixe,#Text_prefixe_rename,0)
          EndIf
          If GetGadgetState(#Check_nom)
            active_Gadget(#entry_nom,#Text_nom_rename,0)
          EndIf
          If GetGadgetState(#Check_suffixe)
          active_Gadget(#entry_suffixe,#Text_suffixe_rename,0)
          EndIf
        Else
          active_gadget(#check_compteur1,#Text_suffixe_rename,1)
        EndIf
        apercu_nom()
      Case #check_compteur1
        If GetGadgetState(#check_compteur1)
          SetGadgetState(#Check_compteur2,0)
        EndIf
        If GetGadgetState(#Check_nom) And GetGadgetState(#check_compteur2)=0
          SetGadgetState(#Check_compteur1,1)
        EndIf
        apercu_nom()
      Case #Check_prefixe
        If GetGadgetState(#Check_prefixe)
          active_Gadget(#entry_prefixe,#Text_prefixe_rename,0)
        Else
          active_Gadget(#entry_prefixe,#Text_prefixe_rename,1)
        EndIf
        apercu_nom()
      Case #Check_nom
        If GetGadgetState(#Check_nom)
          active_Gadget(#entry_nom,#Text_nom_rename,0)
          If GetGadgetState(#check_compteur1)=0 And GetGadgetState(#check_compteur2)=0
            SetGadgetState(#Check_compteur2,1)
          EndIf
        Else
          active_Gadget(#entry_nom,#Text_nom_rename,1)
        EndIf
        apercu_nom()
      Case #Check_suffixe
        If GetGadgetState(#Check_suffixe)
          active_Gadget(#entry_suffixe,#Text_suffixe_rename,0)
        Else
          active_Gadget(#entry_suffixe,#Text_suffixe_rename,1)
        EndIf
        apercu_nom()
      Case #check_compteur2
        If GetGadgetState(#check_compteur2)
          SetGadgetState(#Check_compteur1,0)
        EndIf
        If GetGadgetState(#Check_nom) And GetGadgetState(#check_compteur1)=0
          SetGadgetState(#Check_compteur2,1)
        EndIf
        apercu_nom()
      Case #entry_nom
        apercu_nom()
      Case #entry_prefixe
        apercu_nom()
      Case #entry_suffixe
        apercu_nom()
      Case #Check_resize
        If GetGadgetState(#Check_resize)
          active_gadget(#frame_sortie,#check_rapport,0)
          If GetGadgetState(#Check_jpeg)
            active_gadget(#bar_compression,#indice_compression,0)
          EndIf
        Else  
          active_gadget(#frame_sortie,#indice_compression,1)
        EndIf
      Case #Check_jpeg
        If GetGadgetState(#check_jpeg)
          active_gadget(#bar_compression,#indice_compression,0)
        Else 
          active_gadget(#bar_compression,#indice_compression,1)
        EndIf
      Case #bar_compression
        SetGadgetText(#indice_compression, Str(GetGadgetState(#bar_compression)))
      Case #entry_chemin
        dossier_save = GetGadgetText(#entry_chemin)
      Case #Bouton_parcourir
        new_chemin$ = PathRequester("Choisissez un répertoire", dossier_save)  
        If new_chemin$
          selection_chemin = 1
          dossier_save = new_chemin$
          SetGadgetText(#entry_chemin,dossier_save)
          ;SetGadgetState(#check_copie,0)
          ;DisableGadget(#check_copie,1)
        EndIf
      Case #check_copie
        If first_warning_copie = 0
          MessageRequester("Attention","S'ils comportent le même nom(dans le dossier de sortie) les fichiers seront écrasés, laissez coché pour faire une copie des fichiers",#PB_MessageRequester_Ok)
          first_warning_copie = 1
        EndIf
        apercu_nom()
      Case #Bouton_lancer
        If GetGadgetState(#Check_resize)
          If GetGadgetState(#Check_bmp) Or GetGadgetState(#Check_jpeg) Or GetGadgetState(#Check_png)
            choix_format_image = 1
          Else
            choix_format_image = 0 
          EndIf
        Else
          choix_format_image = 1
        EndIf 
        If choix_format_image = 1
          execution()
        Else
          MessageRequester("Attention","Vous devez sélectionner un format de sortie pour le rééchantillonage.",#PB_MessageRequester_Ok)
        EndIf
    EndSelect
  EndIf
  
Until event = #PB_Event_CloseWindow

Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

C'est peut etre pas fini, mais c'est deja pas mal de boulot, merci de le partager 8)
Répondre