Page 1 sur 1
Traitement par lot
Publié : sam. 23/oct./2021 22:24
par Ekim
Bonsoir à tous,
Quelqu'un peut me dire pourquoi ce petit bout de code ne fonctionne pas alors qu'il à pourtant toutes les bonnes raisons de fonctionner?
Code : Tout sélectionner
size.l = 75
imgfiles$ = OpenFileRequester("Selection","","Fichiers Images|*.jpg;*.png",0,#PB_Requester_MultiSelection)
While imgfiles$
imgfiles$ = NextSelectedFileName()
LoadImage(0,imgfiles$)
If IsFile(0)
imgl = ImageWidth(0)
imgh = ImageHeight(0)
If imgl And imgh
If ResizeImage(0,imgl/size,imgh/size)
If SaveImage(0,imgfiles$)
Debug "Ok"
EndIf
FreeImage(0)
EndIf
EndIf
EndIf
Wend
Je serais currieux d'en connaitre la(es) cause(s), merci beaucoup
Re: Traitement par lot
Publié : sam. 23/oct./2021 23:35
par TazNormand
Salut Ekim
Dejà, ton imgfiles$=NextSelectedFileName() est mal placé, il donne le fichier suivant, donc dans ta boucle, tu ne prends même pas le premier fichier sélectionné, tu passes direct au suivant.
Ensuite, isFile() est à utiliser avec les fonctions CreateFile() entre autres (cf doc), il faut utiliser isImage() :
Code : Tout sélectionner
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UsePNGImageEncoder()
UsePNGImageDecoder()
size.l = 75
imgfiles$ = OpenFileRequester("Selection","","Fichiers Images|*.jpg;*.png",0,#PB_Requester_MultiSelection)
While imgfiles$
Debug imgfiles$
LoadImage(0,imgfiles$)
If IsImage(0)
imgl = ImageWidth(0)
imgh = ImageHeight(0)
If imgl And imgh
If ResizeImage(0,imgl/size,imgh/size)
If SaveImage(0,imgfiles$)
Debug "Ok"
EndIf
FreeImage(0)
EndIf
EndIf
EndIf
imgfiles$ = NextSelectedFileName()
Wend
Re: Traitement par lot
Publié : sam. 23/oct./2021 23:36
par Ar-S
Au cas ou, tu as bien donné à PB le moyen de decoder encoder les images appropriées ?
Code : Tout sélectionner
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UsePNGImageEncoder()
UsePNGImageDecoder()
Pour l'existence des image utilises FileSize() plutôt
Re: Traitement par lot
Publié : sam. 23/oct./2021 23:56
par Ar-S
N'hesite pas non plus à renommer la destination en amont si tu veux garder l'original.
N'hesite pas à mettre des "else debug" si tu mets des "if" ça permet de chopper les erreurs.
Code : Tout sélectionner
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UsePNGImageEncoder() ; si besoin
UsePNGImageDecoder() ; si besoin
size.l = 75
imgfiles$ = OpenFileRequester("Selection","","Fichiers Images|*.jpg;*.png",0,#PB_Requester_MultiSelection)
While imgfiles$
chem$ = GetPathPart(imgfiles$) ; chemin
nom$ = GetFilePart(imgfiles$) ; nom du fichier seul
sortie$ = chem$+"m_"+nom$ ; nouveau fichier de sortie avec le préfixe "m_"
Debug imgfiles$
LoadImage(0,imgfiles$)
If FileSize(imgfiles$) > -1
imgl = ImageWidth(0)
imgh = ImageHeight(0)
If ResizeImage(0,imgl/size,imgh/size)
Debug imgl/size
Debug imgh/size
If SaveImage(0,sortie$,#PB_ImagePlugin_JPEG )
Debug "Ok : "+ sortie$
Else
Debug "NOK : "+ sortie$
EndIf
FreeImage(0)
Else
Debug "resize problem"
EndIf
Else
Debug "loading problem"
EndIf
imgfiles$ = NextSelectedFileName()
Wend
Re: Traitement par lot
Publié : dim. 24/oct./2021 0:42
par Ekim
Bonsoir @TazNormand et @Ar-S
Une succession d'erreurs toutes bêtes pourtant évitables, je le reconnais, mais chez moi, la panique prend trop vite le dessus

, j'y travails
pour répondre à @Ar-S concernant les Plugins Codage\Décodage, j'avais juste oublié de copier complètement le bout de code, je sais j'ai honte

,
en tout cas merci pour votre aide, c'était sympa
