fu-script - interactive ou pas mon image n'est pas modifiée

Gimp est le fabuleux logiciel open source de dessin 2D de qualité professionnelle.
kerkael
Messages : 1
Inscription : 28 avr. 2020, 14:27

fu-script - interactive ou pas mon image n'est pas modifiée

Message par kerkael »

Bonjour,

Je tente le script fu pour la première fois.
Je vois que l'image est ouverte et modifiée (mod time) par le script, mais la modification demandée n'est pas appliquée.
Une idée de ce que je loupe ? (j'ai copié et adapté les lignes de code depuis d'autres script). Pour le moment, le script doit juste passer l'image en 100x100.

cat myresize.scm

Code : Tout sélectionner

(define (myresize filename)
	(let*
		(
			(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
			(drawable (car (gimp-image-get-active-layer image))))
		(gimp-image-resize image 100 100 0 0)
		(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
		(gimp-image-delete image)
	)
)
Je lance le script ainsi :

Code : Tout sélectionner

GIMP -i -b '(myresize "214new.jpg")' -b '(gimp-quit 0)'
Avec l'image dans mon répertoire courant, le script myresize.scm dans le dossier des scripts de GIMP/2.8/scripts

L'exécution me dit que tout va bien :

Code : Tout sélectionner

Setting up environment...
Enabling internal Python...
Launching GIMP...
Fontconfig warning: ignoring UTF-8: not a valid region tag
batch command executed successfully
L'image a un modtime qui évolue à chaque fois que j'exécute le script, mais quand je regarde l'image de nouveau, elle n'est pas retaillée.

Merci de votre aide, les experts.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

Re: fu-script - interactive ou pas mon image n'est pas modif

Message par Gimphried »

Bonjour,
Kerkael a écrit :passer l'image en 100x100.
Tout dépend ce que l'on entend par image "retaillée" :shock:

Code : Tout sélectionner

(gimp-image-resize image 100 100 0 0)
retaille le canvas mais pas le calque (layer) drawable.
Lors de la sauvegarde par le script, seul l'horodatage de l'image change.

1. Gimp menu "Filtres" > "Script-Fu" > "Console"

2. Coller la définition de votre fonction améliorée dans la zone de saisie de la console Script-Fu :
Doc Gimp Figure 13.3. Utilisation de la console.

Code : Tout sélectionner

(define (myresize filename)
    (let*   (   (image      (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
                (drawable   (car (gimp-image-get-active-layer image)))
            )
        (gimp-image-resize image 100 100 0 0)       ; canvas
        (gimp-layer-resize-to-image-size drawable)  ; layer
        (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
        (gimp-image-delete image)
    )
)
3. Faire une copie de sauvegarde de l'image à traiter : 214new.jpg

4. Lancer le script myresize depuis la console Script-Fu en adaptant le chemin de l'image :

Code : Tout sélectionner

(myresize "C:/Chess/Scid/PowerShell/214new.jpg")
214new.jpg 61 Ko 626x626 pixels passe à 4 Ko 100x100.
Il s'agit du coin gauche supérieur de l'image sauvegardée.

5. Coller la définition de votre fonction simplifiée :

Code : Tout sélectionner

(define (myresize filename)
    (let*   ((image         (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
             (drawable      (car (gimp-image-get-active-layer image)))
            )
        (gimp-image-scale image 100 100)            ; scale both canvas and layer
        (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
        (gimp-image-delete image)
    )
)
6. Restaurer la sauvegarde de l'image et appeler à nouveau votre script :

Code : Tout sélectionner

(myresize "C:/Chess/Scid/PowerShell/214new.jpg")
214new.jpg 61 Ko 626x626 pixels passe à 2 Ko 100x100.
Il s'agit de l'icône de l'image sauvegardée.

7. Pour aller plus loin :
Bing.com "Script-Fu Resizing images and keeping the aspect ratio"

8. Ensuite seulement, tester Gimp en mode batch en ligne de commande et script .scm (TinyScheme)
Car le chargement de Gimp peut être long à la longue. :roll:
"batch command executed successfully" ne signifie pas que le script fait ce que l'on pensait. :lol:
Ajouter l'option "--verbose" pour mieux suivre ce que Gimp fabrique. :mrgreen:

Cordialement.
Répondre