The Gimp : Automatiser un traitement [Script-Fu]

  • Le Discord de CG3 est maintenant de retour : Discord ! Cependant ce dernier aura des nouvelles règles, nous vous invitons à lire ceci : Nouveau discord CG3

Statut
La discussion n'est pas ouverte à d'autres réponses

Mr-N4th4n-X3

Membre Banni
4 Déc. 2009
381
0
581
25
Dans mon pc
gam3-of-gam3rs.max2forum.com
Poster sur l'ancien forum par Nathan62500 [Moi]

Une règle simple en informatique : "Si tu dois faire la même chose dix fois, écris un programme!".
En effet, rien de plus lassant que de refaire dix fois la même manipulations sous Gimp. Pour arranger cela et nous faciliter les choses, il existe les scripts-fu. Nous en utilisons souvent sans même le savoir dans le menu Filtres.
Nous allons donc voir comment rendre automatique la création de texte en verre en se basant sur le tutoriel Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!.
Pour les utilisateurs de Gimp2.6 : afin de voir apparaitre ce script dans vos menus, il faut remplacer les lignes qui définissent dans quel menu apparaitra votre script.
Ainsi (script-fu-menu-register "effet-verre" "/Xtns/Logos") deviendra <i>(script-fu-menu-register "effet-verre" "/Filters/Messcripts")</i>.

De cette façon, vous pourrez trouver votre script fraichement installé dans le menu Filtres->Messcripts de la fenêtre Editeur d'image Gimp.


Le principe d'un script est simple, il décrit étape par étape les opérations que nous effectuons sous Gimp en utilisant des procédures. L'ensemble des procédures dont nous disposons est listée dans le menu Exts -> Navigateur de procédures de la fenêtre principale de Gimp.
Nous y retrouvons par exemple gimp-layer-new qui permet de créer un nouveau calque ou encore gimp-edit-cut qui coupe une sélection.

1.) Pour écrire notre script, un éditeur de texte simple nous suffit. Le bloc-note de Windows ou gedit sous Linux feront l'affaire. Nous lançons donc notre éditeur et enregistrons tout de suite notre fichier dans le répertoire scripts de notre dossier d'installation de Gimp.
Nous appelerons, par exemple, notre fichier effet_verre et lui donnons l'extension .scm (extension des scripts de Gimp).

Nous avons donc un fichier effet_verre.scm placé dans le répertoire scripts de notre Gimp.

2.) La première étape de l'écriture de notre script-fu consiste à décrire les étapes même des opérations que nous souhaitons faire effectuer à Gimp. Pour cela nous devons définir une procédure que l'on nommera applique-verre-effet.
Nous tapons donc le code (code signifie ici le contenu d'un programme) suivant :

(define (applique-verre-effet img calque-txt)

Nous indiquons de cette façon que nous définissons (define) une méthode pour appliquer l'effet de verre à l'image img et au calque de texte calque-txt.

Dans cette méthode, nous aurons besoin d'informations comme la hauteur et la largeur de l'image et nous aurons aussi besoin d'un nouveau calque. Nous définissons donc ces variables à l'aide du mot let à l'intérieur de notre procédure applique-verre-effet :

(define (applique-verre-effet img calque-txt)

(let* (
(largeur (car (gimp-drawable-width calque-txt)))
(hauteur (car (gimp-drawable-height calque-txt)))
(calque1 (car (gimp-layer-new img largeur hauteur RGBA-IMAGE "calque-txt 1" 40 NORMAL-MODE)))
)


)


gimp-drawable-width et gimp-drawable-width sont deux procédures qui permettent de récupérer la hauteur et la largeur du calque calque-txt.
Ainsi nous créons grace à gimp-layer-newun nouveau calque calque1 placé sur l'image img de la même largeur et hauteur que calque-txt en mode RVB, dont le nom sera calque-txt1 dans la fenêtre de Gimp, avec une opacité de 40 (pour l'effet transparent du verre) et en mode normal.

Pour connaitre les paramètres qu'il est nécessaire de préciser à une procédure et les valeurs qu'ils peuvent prendre, il suffit de consulter le menu Exts -> Navigateur de procédures :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
3.) Nous rentrons maintenant dans le vif du sujet et allons décrire à Gimp les opérations qu'il doit effectuer sur l'image pour appliquer notre effet de verre.
Pour plus de lisibilité et une meilleure compréhension des commentaires sont rajoutés au dessus de chaque nouvelle ligne de code. Ces commentaires sont précédés d'un ; et peuvent être laissés tels quels dans le fichier.

(define (applique-verre-effet img calque-txt)

(let* (
(largeur (car (gimp-drawable-width calque-txt)))
(hauteur (car (gimp-drawable-height calque-txt)))
(calque1 (car (gimp-layer-new img largeur hauteur RGBA-IMAGE "calque-txt 1" 40 NORMAL-MODE)))
)

;Verrouillage de l'alpha du calque calque-txt
(gimp-layer-set-lock-alpha calque-txt TRUE)

;Découpage automatique de l'image à la taille de son contenu
(plug-in-autocrop 0 img calque-txt)

;Ajout à l'image du calque calque1
(gimp-image-add-layer img calque1 1)
;"Nettoyage" du calque calque1 (suppresion de lignes parasites)
(gimp-edit-clear calque1)
;Coloriage en blanc du texte du calque de texte calque-txt
(gimp-edit-fill calque-txt WHITE-FILL)
;Alpha vers sélection du calque de texte afin de ne sélectionner que le texte
(gimp-selection-layer-alpha calque-txt)
;Réduction de la sélection de 1 pixels
(gimp-selection-shrink img 1)
;Edition->Couper de la sélection réduite sur le calque de texte
(gimp-edit-cut calque-txt)
;Edition-> Coller sur le calque calque1 (opacité 40) et ancrage du calque
(gimp-floating-sel-anchor (car (gimp-edit-paste calque1 0)))
;Découpage automatique de l'image à la taille du calque1
(plug-in-autocrop-layer 0 img calque1)
)

)


Voilà la suite d'opérations que nous devons faire effectuer à Gimp pour obtenir notre effet transparent de verre. Ces opérations correspondent, engrande partie, à la suite de manipulations faites dans le tutoriel Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!.


4.) Maintenant nous devons créer une nouvelle procédure que nous appellerons effet-verre qui sera la procédure principale de notre script. En effet, elle va créer notre image, gimp-image-new créer notre calque de texte, gimp-text-fontname appeler notre procédure applique-verre-effet et enfin afficher l'image créée avec gimp-display-new. Nous ajoutons donc à la suite de notre script le code suivant :

(define (effet-verre text size font )
(let* (
(img (car (gimp-image-new 256 256 RGB)))
(b-size (* size 0.2))
(calque-texte (car (gimp-text-fontname img -1 0 0 text b-size TRUE size PIXELS font)))
)
(applique-verre-effet img calque-texte)
(gimp-display-new img)
)
)


5.) Il ne nous reste alors qu'à créer l'interface qui permettra à l'utilisateur, de saisir le texte sur lequel il souhaite appliquer l'effet verre SF-STRING, de préciser la police à utiliser SF-FONT ainsi que sa taille SF-ADJUSTMENT.
Nous précisons ici aussi les données identifiant la procdure principale à appeler effet-verre, le créateur du script et son contenu.
Enfin nous demandons à Gimp de présenter ce script dans un de ses menus. Ici le menu choisi est Exts -> Logos.
Pour tout cela nous ajoutons ce code à la suite du script :

(script-fu-register
"effet-verre"
"Texte de verre"
"Crée un simple effet translucide de verre sur du texte"
"Skonce"
"Skonce"
"2008"
""
SF-STRING _"Text" ""
SF-ADJUSTMENT _"Font size (pixels)" '(100 2 1000 1 10 0 1)
SF-FONT _"Font" ""
)

(script-fu-menu-register "effet-verre" "/Xtns/Logos")


6.) Une fois que le code complet est saisi, que le fichier est bien enregistré dans le répertoire des scripts de Gimp au format .scm, il est nécessaire de demander à Gimp de recharger les scripts par le menu Exts -> script-fu -> Actualiser les scripts.
Désormais nous avons un entrée dans le menu Exts -> Logos -> Texte de verre qui ouvre une boîte de dialogue :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!Nous pouvons alors saisir notre texte, préciser sa taille et sa police et cliquer sur Valider.
Le script s'exécute et affiche l'image créée :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!Voici la version complète du script :
(define (applique-verre-effet img calque-txt)

(let* (
(largeur (car (gimp-drawable-width calque-txt)))
(hauteur (car (gimp-drawable-height calque-txt)))
(calque1 (car (gimp-layer-new img largeur hauteur RGBA-IMAGE "calque-txt 1" 40 NORMAL-MODE)))
)

(gimp-layer-set-lock-alpha calque-txt TRUE)
(plug-in-autocrop 0 img calque-txt)

(gimp-image-add-layer img calque1 1)
(gimp-edit-clear calque1)

(gimp-edit-fill calque-txt WHITE-FILL)
(gimp-selection-layer-alpha calque-txt)
(gimp-selection-shrink img 1)
(gimp-edit-cut calque-txt)
(gimp-floating-sel-anchor (car (gimp-edit-paste calque1 0)))
(plug-in-autocrop-layer 0 img calque1)
)

)

(define (effet-verre text size font )
(let* (
(img (car (gimp-image-new 256 256 RGB)))
(b-size (* size 0.2))
(calque-texte (car (gimp-text-fontname img -1 0 0 text b-size TRUE size PIXELS font)))
)
(applique-verre-effet img calque-texte)
(gimp-display-new img)
)

)

(script-fu-register
"effet-verre"
"Texte de verre"
"Crée un simple effet translucide de verre sur du texte"
"Skonce"
"Skonce"
"2008"
""
SF-STRING _"Text" ""
SF-ADJUSTMENT _"Font size (pixels)" '(100 2 1000 1 10 0 1)
SF-FONT _"Font" ""
)

(script-fu-menu-register "effet-verre" "/Xtns/Logos")
 
Statut
La discussion n'est pas ouverte à d'autres réponses