Sauvegarde Auto de calques images datés sur 999 par jour

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Sauvegarde Auto de calques images datés sur 999 par jour

Message par kernadec »

salut à tous
Voilà une procédure que j'avais crée il y a un moment.
pour faire des sauvegardes automatiques d' images etc..

l'appel de la procédure avec le nom et l'extension
conditionne le nom du sous-dossier des images.
L'extension indiquera le type des fichiers pour la
sauvegarde en fichiers images...
j 'espère que cela sera utile à quelqu'un. :wink:
Cordialement

Code : Tout sélectionner

;##########################################################################################################
;####     procédure de sauvegarde automatique de fichiers incrémentés jusqu'a 999 par jour             ####
;####     auteur: kernadec février 2021     mode d' emploi ci-desous                                   #### 
;#### le nom utilisé dans l'appel de la procédure regit la suite des evenement des fichiers calques    #### 
;#### le nom de l'image sans l'extension sera utilisée comme nom de dossier calque dans le repertoire  ####  
;#### du programme executable. l'extension deviendra le type de sauvegarde des calques bmp, jpg, png   #### 
;#### la procédure utilise le presse-papier pour faire ses sauvegardes de calquse numerotés, datés     #### 
;##########################################################################################################


UsePNGImageEncoder()
UseJPEGImageEncoder()
UsePNGImageDecoder()
UseJPEGImageDecoder()

Enumeration
  #FichierAuto
  #ImageAuto
EndEnumeration

Procedure Sauve_AutoCalque_Image(Nom_Image$) 
  
  Chemin$ = #PB_Compiler_Home                                               ; saisie du nom du repertoire de l'exécutable
  Dossier_Image$ = GetFilePart(Nom_Image$,#PB_FileSystem_NoExtension) + "\" ; saisie du nom du fichier pour créer un repertoire de travail
  NomTmp$ = GetFilePart(Nom_Image$,#PB_FileSystem_NoExtension)              ; saisie du nom du fichier sans l'extension
  Tmp_Date$ = FormatDate("%yyyy%mm%dd", Date()) + "#"                       ; saisie de la date du jour
  Ext$ = GetExtensionPart(Nom_Image$)                                       ; saisie de l'extension
  
  fichier$ = NomTmp$ + Tmp_Date$ + "001" + "." + Ext$                       ; premier nom de fichier
  Ftmp$ = fichier$                                                          ; copie double du nom de fichier
  
  If ExamineDirectory(#FichierAuto, #PB_Compiler_Home, "*.*")               ; verifie si Dossier Image existe
    While NextDirectoryEntry(#FichierAuto)
      If DirectoryEntryType(#FichierAuto) = #PB_DirectoryEntry_File 
        If CreateDirectory(Dossier_Image$)                                  ; creation d'un nouveau repertoire  
          Break
        EndIf 
      EndIf
    Wend
    FinishDirectory(#FichierAuto)
  EndIf
  
  Repeat                                                                    ; Boucle d'incrementation jusqu'a 999 
    If ReadFile(#FichierAuto,Chemin$ + Dossier_Image$ + fichier$)           ; lecture des nom de fichier existant
      
      ext = Len(StringField(Fichier$,CountString(Fichier$, ".") + 1, "."))  ; nb de caracteres de l'extension
      
      Tmp0 = Val(Right(Left(fichier$,Len(fichier$) - ( 1 + ext)), 3))       ; cherche numero du fichier
      
      tmp$ = "00" + Str(Tmp0 + 1)                                           ; incremente le numero
      If Len(tmp$) > 3 : tmp$ = Right(tmp$,3) :  EndIf                      ; formate en 3 chiffres maximum à 999
      
      fichier$ = NomTmp$ + Tmp_Date$ + Tmp$ + "." + Ext$                    ; nouveau nom de fichier à tester
      
      CloseFile(#FichierAuto)                                               ; ferme fichier #FichierAuto
    Else
      fichier$ = Left(fichier$, Len(fichier$))                              ; nouveau nom de fichier de l'image
      Break                                                                 ; fin de la recherche
    EndIf
  ForEver
  
  img = GetClipboardImage(#PB_Any,32)                                              ; extrait l'image du presse papier 
  
  If ext$ = "png"
    SaveImage(img, Chemin$ + Dossier_Image$ + Fichier$, #PB_ImagePlugin_PNG, 32)   ; sauve l'image type png
  ElseIf  ext$ = "jpg" 
    SaveImage(img, Chemin$ + Dossier_Image$ + Fichier$, #PB_ImagePlugin_JPEG, 32)  ; sauve l'image type jpeg
  ElseIf  ext$ = "bmp"
    SaveImage(img, Chemin$ + Dossier_Image$ + Fichier$, #PB_ImagePlugin_BMP, 32)   ; sauve l'image type bmp
  Else
    MessageRequester("Sauvegarde Image", "Image Non Sauvegardée: " + fichier$)
  EndIf
  
EndProcedure



CreateImage(#ImageAuto, 10, 10, 32)                                                ; initialise l'image 99
LoadImage(#ImageAuto, #PB_Compiler_Home + "Examples\Sources\Data\Geebee2.bmp")     ; Charge l'image depuis un fichier
ClearClipboard()                                                                   ; vider le clipboard
SetClipboardImage(#ImageAuto)                                                      ; copie l'image dans presse papier 

; L'exemple de saisie image ici avec loadimage()
; mais nous pouvons utiliser un des modes suivant: 
; StartDrawing(CanvasOuput)   
; StartDrawing(imageOutput)
; StartDrawing(windowOutput) et envoyer vers le clipboard 

Sauve_AutoCalque_Image("Png_Image.png")