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.
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")