Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problems file-png-save-defaults
#1
Hello guys, 

I am new here, and I wrote my first script-fu. 
Unfortunately, it does not work (yet Big Grin)


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 Smile
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
Reply
#2
I think I found why this code is not working. It is a problem to define a string. I open a new thread about that. I am now looking for a function to compare string. If you have any idea, I would be happy to have a look on it.

David
Reply


Forum Jump: