Traitement par lot

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Traitement par lot

Message 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
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Traitement par lot

Message 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
Image
Image
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Traitement par lot

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Traitement par lot

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: Traitement par lot

Message 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 :cry: , j'y travails :wink:

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 :wink:
Répondre