Hello guys,
I am new here, and I wrote my first script-fu.
Unfortunately, it does not work (yet )
My script is about resizing png images, and then save them.
The script seems to be working for the resizing.
However, I don't manage to save the new pics.
I am working on windows 10 with GIMP 2.10.
My code is below.
Any feedback would be appraciated
Thank you in advance for any comment.
David
I am new here, and I wrote my first script-fu.
Unfortunately, it does not work (yet )
My script is about resizing png images, and then save them.
The script seems to be working for the resizing.
However, I don't manage to save the new pics.
I am working on windows 10 with GIMP 2.10.
My code is below.
Any feedback would be appraciated
Code:
(script-fu-register
"script-fu-resize-theimages" ;Nom de la fonction (console)
"Redim" ;Nom du sous menu dans l'onglet /File/Create/Redimensionnement Image
"Redimensionne tes images png de la taille\
que tu veux, et avec l'interpolation\
que tu veux. Trop cool isn't it ?" ;description
"Dav The Crouch, allias la classique" ;author
"copyright the GIMP Documentation Team" ;copyright notice
"Pour entrer dans l'histoire : Mai 18, 2018" ;date created
"" ;image type that the script works on
SF-DIRNAME "Chemin source" ""
SF-ENUM "Interpolation" '("InterpolationType" "linear") ; Menu déroulant avec une interpolation à choisir
SF-VALUE "Width" "30" ; Menu à trou : Entré de la largeur finale de l'image
SF-VALUE "Height" "30" ; Menu à trou : Entré de la largeur finale de l'image
SF-DIRNAME "Chemin cible" ""
)
(script-fu-menu-register "script-fu-resize-theimages" "<Image>/File/Create/Redimentionnement Image") ; create a menu
(define (script-fu-resize-theimages sourcepath inInterpol inWidth inHeight destinationPath); On défini une fonction d'entrée qui prend les 3 paramètres du menu défini plus haut
(let*
(
; sélectionner le dossier à traiter avec SF-DIRNAME
; on chope tout les noms de chemin et les noms des images et on en fait une liste. Exemple :
; C:/Users\\ADOM.png" "C:/Users\\ADOM_grisée.png" ect...
(filelist (cadr (file-glob (string-append sourcepath "\\*.png") 1)))
)
; On prend donc les noms de la liste un par un, tant qu'il y en a
(while (not (null? filelist)) ;2 fonctions, une qui resize et sauvegarde, l'autre qui met à jour la liste-compteur (filelist)
(let*
(
; on prend le premier chemin associer à la première image
(first-filename (car filelist))
; On définit la variable image (pour les fonctions)
(image (car (gimp-file-load RUN-NONINTERACTIVE first-filename first-filename)))
; On définit de la variable drawable
(drawable (car (gimp-image-get-active-drawable image)))
; On reconstruit le nom : chemin/image.png
(outputfilename
(string-append ;On concatene :
(string-append destinationPath "/") ;chemin/
(cadr (strbreakup first-filename "\\")) ;image.png
)
)
)
; On défini l'interpolation
(gimp-context-set-interpolation inInterpol)
; Et finalement on lance le redimensionnement
(gimp-image-scale image inWidth inHeight)
;sauvegarde de l'image
(file-png-save-defaults RUN-NONINTERACTIVE image drawable outputfilename outputfilename)
;(file-png-save RUN-NONINTERACTIVE image drawable outputfilename outputfilename FALSE 9 TRUE FALSE FALSE TRUE TRUE)
;fermeture de l'image
(gimp-image-delete image)
)
; On supprime les "chemin/image.png" déjà fait
(set! filelist (cdr filelist))
)
)
)
Thank you in advance for any comment.
David