Comprendre un script fu et son utilisation.

Pour tous ceux qui veulent aller plus plus dans les aspects techniques de Gimp.

Modérateur : Ze Techos

Répondre
Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Comprendre un script fu et son utilisation.

Message par cooboolt » lun. août 29, 2011 2:58 pm

Salut a tous.

J'ouvre ce nouveau fil de discussion pour recentrer le sujet qui n'avait plus sa place dans l’ancien fil.
La documentation, c'est sympa et ça aide, mais discuter avec ceux qui connaissent, apporte beaucoup, surtout quand on est vraiment pas un adepte de la programmation.

Je récapitule ce que j'ai compris et qui constitue une sorte d'introduction au profane.
(Merci en particulier à Gnou, qui m'a énormément aidé.)

1° Pourquoi passer par le Script fu et qu'est ce que c'est ?
De façon simple, en utilisant Gimp et en ayant à faire énormément des manipulations pour obtenir un élément en mouvement,
on peu être amené à vouloir automatiser certaines taches pour gagner du temps.
Comme par exemple, si on veut créer une animation contenant une sphère tournante à partir d'une image,
que l'on plaque sur la sphère de multiple de fois tout en réglant sa lumière,
sa rotation ou sa trajectoire.
Le script fu est la solution d'automatisation qui est à disposition.
Il est écrit en langage scheme,
en un scripte qui programme toutes les actions à automatiser.

2° Comment s'en approcher et l'observer ?
Au départ, voyez dans votre logiciel que vous avez 2 options à découvrir.
1) Dans votre fenêtre principale qui est appelé <image>
en passant par "Filtre>Script fu",
vous avez trois options,
"Actualiser les script", "Console" et "Démarrer le serveur...".
2) Toujours dans votre fenêtre principale,
si vous allez dans <image>"Aide>Navigateurs de procédure",
vous verrez une fenêtre qui vous donnera les divers commandes
que vous pouvez utiliser dans le script pour automatiser les actions voulus.

Voila, ceci est dit et de la manière la plus épurée
afin de planter le décor qui est celui du script fu.
Il reste encore à savoir que le script fu peut s'écrire sur un simple fichier texte.
Et il se situera dans Gimp
là où vous avez précisez le chemin de son emplacement dans le script.
C'est à dire dans les divers menus de Gimp.
Vous pouvez aussi l'écrire avec la console de Gimp,
pour vérifier que votre écriture ne comporte pas d'erreurs
et obtenir le résultat de chaque donné que vous entrerez.

Nous commençons sur un tout petit schéma
pour comprendre un peu plus l'écriture du script,
qui est écrit en scheme.

Après avoir déclaré la fonction,
on ouvre la variable locale "let*".
Donc on l'écrit entre parenthèses '(let*)
et c'est , imbriqué avec de nouvelles parenthèses
...dans ces parenthèses, qui deviennes extérieures,
que l'on met les éléments et les paramètres d'actions.

(define (...)

(let*
( <-Pths1...Pths2->(...Pths3->(...)<-Pths3...)<-Pth2
)<-Pth3


Pths : Parenthèses

Et voici un petit script fu qui permet de faire un calque à partir de l'image visible.
(Encore merci à Gnou, qui m'a aidé avec patience.)

; Test
; Créez un nouveau calque de ce qui est visible à partir d'une image.


(define (script-fu-new-layer-of-image image)
(gimp-image-undo-group-start image) ; Début de listage

(let* (
(TheNewLayer (car (gimp-layer-new-from-visible image image "TheNewLayer"))) ; Créez un nouveau calque de ce qui est visible dans une image.
)
;(drawable (car (gimp-image-get-active-drawable image)))
(gimp-image-add-layer image TheNewLayer 0) ; Ajouter le calque spécifié à l'image.

) ; Fin de la varable locale "let*"
(gimp-image-undo-group-end image) ; Fin de listage
) ; Fin de la déclaration d'action "define"

(script-fu-register "script-fu-new-layer-of-image" ;; Déclaration et nom du script
"<Image>/Script-Fu/New Leyer of Image" ;; position du script dans le menu
"Cree un calque a partir de l'image existante"
"User"
"Copyright"
"17.08.211"
"RGB*"
SF-IMAGE "Image" 0 ;; image dans lequel le calque est ajouté
SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image
SF-COLOR "Couleur" '(255 0 0)
SF-TOGGLE "Fusionner le calque ?" FALSE
) ;; fin du register

Ce qui est en vert représente les commentaires et est sans incidence sur le script.
Ensuite, le script se fait en deux parti.
La première, le script en lui même avec ses variables et les leurs paramètres.
Et la deuxième, l'inscription au registre (dans le navigateur de procédures),
pour divers infos d'identification et d'emplacement.
Ici l'emplacement est : "<Image>/Script-Fu/New Leyer of Image"
Donc, on retrouvera ce scripte dans la fenêtre principal,
dans une nouvelle option nommée Script-Fu.

Il se peut que cet écrit comporte des erreurs.
Je serais heureux d'en discuter avec vous.
Petit ou gros niveau, peu importe, le principale étant d'ouvrir un peu plus cet horizon du script fu aux profanes.

Merci d'avance à tous ceux qui participerons à la progression de ce sujet.
Et espérant votre motivation, je vous souhaite une excellente journée.

Bien à vous.

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » lun. août 29, 2011 8:50 pm

Salut ;-),

Juste quelques remarques concernant le script sur lequel j'étais (modestement) intervenu :

"SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image"
Un drawable peut être un calque...mais aussi un masque de calque, un calque de texte, un canal...
;-)


(gimp-image-undo-group-start image) ; Début de listage
(gimp-image-undo-group-end image) ; Fin de listage

Ce n'est pas vraiment un listage...
C'est pour que tout ce qui est effectué entre ces deux instructions n'apparaisse que comme une seule action dans l'historique...
Afin que l'utilisateur, s'il décide d'annuler l'effet d'un script, n'ait qu'une action à annuler.
Par exemple, sur le script "36rotations", pour annuler le script, il suffit d'annuler la dernière action, puisque tout le script se résume (au niveau annulations) à une action...

Si tu veux t'amuser, tu peux essayer sur le script "36rotations" à désactiver les deux fonctions (en mettant un point-virgule devant), et tu verras toutes les actions du script dans l'historique...
;-)

Je ne t'avais pas mis cela dans l'ancien topic, pour éviter d'en mettre "trop d'un coup"...
;-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mar. août 30, 2011 8:20 am

Salut Gnou :ismile:

Oui effectivement et j'avais mis "Début" et "Fin de listage" pour faire court.
Je remet le lien de cet excellent article (que tu m'as indiqué) qui décortique un script fu.
http://zigazou.wordpress.com/2009/05/19 ... pour-gimp/
J'y avais vu ce que tu m'explique.
Et ce qui en est dit est un peu moins précis :

Démarrer un niveau undo
(gimp-image-undo-group-start image)
À la manière des rollback en base de données, on va transformer la séquence d’actions en une action unique du point de vue de l’utilisateur.
Sans cette ligne, l’utilisateur devrait faire 13 annulations pour défaire les modifications.
L’image en cours est passée en paramètre.


En tout cas ce premier petit script marche très bien.
Il copie vraiment tout ce qui est visible.
C'est à dire tout ce qui est laissé en visible et pas le reste, quand il y a plus.
Et en plus il est plus facile à comprendre pour l'instant.
Donc comme j'en suis encore à saisir la logique du script je vais remettre celui-ci pour les questions qu'il me reste en tête.

1 ; Test
2 ; Créez un nouveau calque de ce qui est visible à partir d'une image.
3
4 (define (script-fu-new-layer-of-image image) ; ( Partie script) Définition de la fonction
5 (gimp-image-undo-group-start image) ; Inscription dans l'historique.
6
7 (let* ( ; Variable locale
8 (TheNewLayer (car (gimp-layer-new-from-visible image image "TheNewLayer"))) ; Créez un nouveau calque de ce qui est visible dans une image.
9 )
10 ;(drawable (car (gimp-image-get-active-drawable image))) ; Obtenez dessinable actifs de l'image
11 (gimp-image-add-layer image TheNewLayer 0) ; Ajouter le calque spécifié à l'image.
12
13 ) ; Fin de la varable locale "let*"
14 (gimp-image-undo-group-end image) ; Fin d'inscription dans l'historique.
15 ) ; Fin de la déclaration d'action "define"
16
17 (script-fu-register "script-fu-new-layer-of-image" ;; (Partie registre) Déclaration et nom du script
18 "<Image>/Script-Fu/New Leyer of Image" ;; position du script dans le menu
19 "Cree un calque a partir de l'image existante"
20 "User"
21 "Copyright"
22 "17.08.211"
23 "RGB*"
24 SF-IMAGE "Image" 0 ;; image dans lequel le calque est ajouté
25 SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image
26 SF-COLOR "Couleur" '(255 0 0)
27 SF-TOGGLE "Fusionner le calque ?" FALSE
28 ) ;; fin du register

J'ai mis des numéros pour mieux s'y retrouver.
Et j'aimerais savoir à quoi correspond la commande "(car" ?
Dans la ligne 11 on voit un 0 (que j'ai mis en rouge), à quoi correspond t-il ?
Dans les lignes 24 et 25 on retrouve aussi des 0, et là aussi je me demande à quoi correspondent-ils ?

Petite info (donné par Gnou), un petit logiciel peut être très utile en plus de la console que vous avez dans Gimp.
Notepad vous offre la possibilité de distinguer les différents codes par des couleurs.
Il vous faut pour cela, une fois votre scripte affiché dans le logiciel, aller dans "Langage>S>Scheme" pour régler le langage approprié.

(Je le répète, ce fil n'est pas réservé aux initiés, les profanes sont aussi les bienvenus.
Je l'ai fait pour comprendre et apprendre cette fonction qu'est le script fu et qui peut nous amener à faire un vrai travaille sur nos créations.
)

Bonne journée à tous.

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » mar. août 30, 2011 8:58 am

Re ;-)


"Et j'aimerais savoir à quoi correspond la commande "(car" ?"
http://abcdugimp.free.fr/gimp/apprendre ... heme-1.php
(point 3.1)
;-)


"Dans la ligne 11 on voit un 0 (que j'ai mis en rouge), à quoi correspond t-il ?"
En cherchant "gimp-image-add-layer" dans le navigateur de procédure, tu aurais eu la réponse.
;-)
Dans les paramètres, le 3° :

Code : Tout sélectionner

position INT32 The layer position
C'est la position du calque dans la pile de calque...
0 => le calque créé sera placé en haut de pile
1 => le calque créé sera placé en 1ère position après le calque existant en haut de la pile (donc ce sera le 2° en partant du haut de la pile...), etc...

Tu peux tester, sur une image avec plusieurs calques, en changeant et en mettant 1, 2...
;-)


Quand à "SF-IMAGE "Image" 0" et "SF-DRAWABLE "Drawable" 0", j'avoue ne m'être jamais posé la question...
Peut-être (et je dis bien peut-être) pour initialiser ces deux paramètres ?


Dernier point, ligne 10...comme je l'avais dit dans l'autre topic :
"Et là...ça fonctionne (enfin).
Et pas besoin de :
(drawable (car (gimp-image-get-active-drawable image)))
"

Dans l'exemple que tu mets :
;(drawable (car (gimp-image-get-active-drawable image))) ; Obtenez dessinable actifs de l'image
l'instruction est précédée d'un point-virgule (;), et est donc considérée comme un commentaire (et n'est pas exécutée).
;-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mar. août 30, 2011 9:20 am

Oui effectivement, pour la ligne dix, je viens de la rectifier, et je n'avais pas vu le point virgule.
Et bien il me reste à faire une évolution de ce scripte.
Là j'ai coincé un peu de boulot et je dois y aller.
Mais au prochain poste, j'essayerais de rajouté quelque chose.
Merci pour le lien, là j'y trouverais mon bonheur.
Et si tu as autre chose, n'hésite pas, au stade de compréhension ou j'en suis, tout est bon à prendre.
Excellente journée et à plus tard. (:))

1 ; Test
2 ; Créez un nouveau calque de ce qui est visible à partir d'une image.
3
4 (define (script-fu-new-layer-of-image image) ; ( Partie script) Définition de la fonction
5 (gimp-image-undo-group-start image) ; Inscription dans l'historique.
6
7 (let* ( ; Variable locale
8 (TheNewLayer (car (gimp-layer-new-from-visible image image "TheNewLayer"))) ; Créez un nouveau calque de ce qui est visible dans une image.
9 )
10 ;(drawable (car (gimp-image-get-active-drawable image))) ; Obtenez dessinable actifs de l'image
11 (gimp-image-add-layer image TheNewLayer 0) ; Ajouter le calque spécifié à l'image.
12
13 ) ; Fin de la varable locale "let*"
14 (gimp-image-undo-group-end image) ; Fin d'inscription dans l'historique.
15 ) ; Fin de la déclaration d'action "define"
16
17 (script-fu-register "script-fu-new-layer-of-image" ;; (Partie registre) Déclaration et nom du script
18 "<Image>/Script-Fu/New Leyer of Image" ;; position du script dans le menu
19 "Cree un calque a partir de l'image existante"
20 "User"
21 "Copyright"
22 "17.08.211"
23 "RGB*"
24 SF-IMAGE "Image" 0 ;; image dans lequel le calque est ajouté
25 SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image
26 SF-COLOR "Couleur" '(255 0 0)
27 SF-TOGGLE "Fusionner le calque ?" FALSE
28 ) ;; fin du register

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » mar. août 30, 2011 10:33 am

Re,

La ligne 10 n'étant pas utilisée, le mieux est de la supprimer...
;-)


@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mar. août 30, 2011 6:43 pm

Merci Gnou. :ibiggrin:
C'est corrigé, et c'est sympa de garder contact, ça m'encourage.

Mais en parlant de courage ...j'ai fait un petit pas en arrière.
Je vais recommencer ce que je faisais mais en le postant.
Pour bien chopé le tout.

Alors !
Voici le point de départ.
Car ce petit script s’enregistre dans le navigateur de procédure.
Aide > Navigateur de procédures
Et apparait dans Fichier > Créer > Text > Text Box

Image

Pour l'avoir -> http://cjoint.com/?AHEsWhouIqD

Après on va monter ça peu à peu.

Sinon je me suis marré avec la console et je pige mieux "(car" et "(cdr".
Pour comprendre, la console de Gimp ça aide.
En fait, tout dépend du "a" ou du "d".
j'ai testé avec "tete1" "tete2" "tete3"
Console :
> (car '("tete1" "tete2" "tete3"))
"tete1"
> (cdr '("tete1" "tete2" "tete3"))
("tete2" "tete3")
> (cddr '("tete1" "tete2" "tete3"))
("tete3")

J'ai rien réussi avec "caad".
Mais on remarque que la lettre du milieu défini la commande.

Sinon pas plus.
(J'ai mal au dos et j'suis mort.)


Bonne soirée. Image

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » mar. août 30, 2011 9:34 pm

Re ;-),

Concernant car, cdr et les dérivés, un post de matteo78 :
http://www.gimp-attitude.org/forum2/vie ... 958#p45958
...où tu peux voir qu'il y a "de quoi s'amuser" (aspirine recommandée)...
;-)


Bon courage pour la suite.
;-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mer. août 31, 2011 9:31 am

Salut Image

Merci, là je me suis contenté de continuer à jouer avec la console.
Ça a approfondit les constatations.

Console Image

> (car '("A" "B" "C" "D" "E"))
"A"
> ; La tête est relevé

> (cdr '("A" "B" "C" "D" "E"))
("B" "C" "D" "E")
> ; La queue est relevé, mais la queue est en quatre parties "B" "C" "D" "E"

> (caar '("A" "B" "C" "D" "E"))
Error: car: argument 1 must be: pair

> (cddr '("A" "B" "C" "D" "E"))
("C" "D" "E")
> ; La queue apparait en trois parties "C" "D" "E"

> (caaar '("A" "B" "C" "D" "E"))
Error: car: argument 1 must be: pair

> (cdddr '("A" "B" "C" "D" "E"))
("D" "E")
> ; La queue apparait en deux parties "D" "E"

> (caaaar '("A" "B" "C" "D" "E"))
Error: car: argument 1 must be: pair

> (cddddr '("A" "B" "C" "D" "E"))
("E")
> ; La queue apparait seulement en une partie "E"

Alors on peut se demander :
1° Pourquoi "(car" est limité à la tête alors de "(cdr" ne l'ai pas à la queue.
2° On vois que l'on peut se saisir de (ou retourner) :

car : A
cdr : B C D E
cddr :C D E
cdddr : D E
cddddr : E

Et caar, caaar et caaaar ne marchant pas on ne peut pas se sésir de :

caar : A B
caaar : A B C
caaaar : A B C D

Image
Donc ...il reste une zone d'hombre... .

Si t'as une explication, j'suis preneur.

Bonne journée Image
Dernière modification par cooboolt le mer. août 31, 2011 11:42 am, modifié 2 fois.

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mer. août 31, 2011 11:37 am

Ok, je re-poste pour alimenté notre script de départ.

1) Ceci crée une nouvel image
2) Et se place sous "define"
3 )détail supplémentaire : création de la variable "theTexte"

0 (let* ; variables local
1 _________(
2 ___________; création d'une image
3 ___________(theImageWidth 10) ; largeur
4 ___________(theImageHeight 10) ; hauteur
5 ___________(theImage (car ; La variable "theText" retourne "gimp-image-new"
6 ____________________(gimp-image-new ; dans le navigateur de procèdure
7 _____________________theImageWidth ; + largeur
8 _____________________theImageHeight ; +hauteur
9 _____________________RGB ; couleur RGB sans canal Alpha
10 ____________________)
11 _________________)
12 ___________)
13 ___________(theText) ; Déclaration de la variable "theTexte"
14 ____________________; Cette variable sera créée plus tard
15 _________________)
16 ) ; Fin de let*

Effectivement on à une fenêtre de configuration
mais pas plus.

Image

Donc les deux remarques et deux questions, qui me viennent.

Lignes 3 et 4, on remarque que l'on a une hauteur et une largeur de 10
Mais pour l'instant ça ne compte pas encore,
puisqu'on ne va pas au delà de la fenêtre de config,
Peut-on supposer que ces démentions s'appliqueront plus tard
par rapport au bord de l'image ?

Ligne 5 6 7 8 9 10
La variable "theImage" retourne "gimp-image-new" qui est en tête
et qui s’éditionne avec "theImageWidth", "theImageHeight" et RGB.
Est-ce vraiment dans ce sens qu'il faut l'interpréter ?

A plus tard Image

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » mer. août 31, 2011 9:53 pm

Salut ;-),

En rappelant (une fois de plus) que je suis (très) loin d'être une "bête" en script...
(D'ailleurs, si quelqu'un constate une erreur, ne pas hésiter à le signaler...cela profitera à tous ;-)


Concernant ton avant-dernier post :
http://fr.wikibooks.org/wiki/Programmat ... les_listes
car : retourne le premier élément d'une liste
cdr : retourne la liste amputée du premier élément
Donc car ne retourne qu'un élément, cdr peut en renvoyer plusieurs (en multipliant les "d"), puisque cdr retourne une liste (et non un élément unique d'une liste comme car).
;-)


Concernant ton dernier post :
Lignes 3 et 4
L'écriture d'un script-fu va dépendre des actions que tu vas effectuer...

Un exemple :
http://docs.gimp.org/fr/gimp-using-scri ... cript.html
Là, hauteur et largeur sont initialisées à 10, ce qui n'a pas d'importance puisque l'image est ensuite redimensionnée.

Donc, tout va dépendre de ce que tu souhaite réaliser avec ce script...

Si par exemple, le but est est de réaliser une image avec une taille fixe, mieux vaut fixer celle-ci dès le départ.
Par contre, si c'est pour réaliser une image de taille variable (par exemple, une image qui s'adapte à une taille de police), tu initialises et modifie ensuite...
;-)

Ligne 5 6 7 8 9 10
N'ayant jamais écrit de script qui créent "à partir de rien"...mon "analyse" sera à "prendre avec des pincettes"...
:-)

À première vue, je dirais que la procédure gimp-image-new nécessitant 3 paramètres [ce que l'on peut voir dans le navigateur de procédure], il faut bien les renseigner...
Et si tu écris
(gimp-image-new theImageWidth theImageHeight )
tu risques, à mon avis, d'avoir un zoli "unbound variable"...puisque theImageWidth & theImageHeight seront dans le script des variables non renseignées...

Si tu ne trouves pas, je regarderais plus tard...
Tu peux, en attendant, jeter un œil sur des scripts utilisant cette fonction.
Ça te permettra sûrement de comprendre mieux...
;-)

Tu peux aussi te créer un "script de test"...qui te servira à tester les procédures une par une.
Ça peut aider à la compréhension d'une procédure...et ça peut éviter de multiplier les erreurs sur des procédures différentes...
Par exemple, si tu testes 3 procédures, en cas d'erreur, il faut chercher dans les 3 procédures (sauf si le message d'erreur est explicite...), tandis que si tu testes une procédure, l'erreur vient de cette procédure...
;-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » jeu. sept. 01, 2011 8:06 am

Salut Gnou. Image

Déjà un grand merci pour ton soutien Image et ton aide.
C'est pas souvent que ça m'est arrivé.

Après, sur car et cdr, je te trouve un peu court.
La on reste tout de même vachement sur notre faim.
Alors on sait que car ne fait plus du tout la même chose que cdr dans son contraire.
Et comment on fait pour relever les éléments sans toucher le dernier ?
Vais en faire une jaunisse si je ne le sais pas.
Image

Après y a deux choses.

La première est que avec ce scripte, je voulais partir d'un point de départ.
C'est très important quand on est débutant de ne pas se retrouver au milieu du labyrinthe.
Mais d'y entrer doucement par l'entrée et en étant rassuré par c'est entrée qui aide à rassembler
et trier ce qui est appris, car mesurable, voir quantifiable depuis le départ.
Alors qu'au milieux, les informations sont innombrables et on ne se repaire plus.
Le script tend à faire un filtre de lettres pré-créé, qui s'ajuste avec l'image.
Et va nous servir à créer un calque de lettre.

Pour la seconde, oui avec plaisir.
Si tu peux me faire un petit scripte de teste des procédures,
ce sera un plaisir pour moi de l'utiliser et de tester toutes les procédures.
Image

A toute car je repasse pour la suite.
Bonne journée.
Image

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » jeu. sept. 01, 2011 10:07 am

Salut ;-),

En partant des explications données ici (déjà cité) :
http://www.gimp-attitude.org/forum2/vie ... 958#p45958

Un exemple, dans la console :
>(define ma-liste (list "A" "B" "C" "D" "E"))
ma-liste

Un exemple pour récupérer la 1ère et la 3° valeur :
>(car ma-liste) (car (cdr (cdr ma-liste)))
"A""C"

ou (comme expliqué dans le topic que je mets en lien) :
>(car ma-liste) (caddr ma-liste)
"A""C"

Maintenant, n'ayant jamais "fais joujou" avec ce genre de traitement, je ne sais pas (mais alors, pas du tout !) si c'est utilisable tel quel dans un script-fu...
;-)

Quand à un script-fu de "test", je vais regarder ce que je peux faire, n'ayant jamais fais de script créant une image...

;-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
Le Gnou
Maître pisteur
Messages : 1061
Inscription : mer. juin 08, 2011 8:30 pm
Localisation : Savane Picarde... :)
Contact :

Re: Comprendre un script fu et son utilisation.

Message par Le Gnou » jeu. sept. 01, 2011 8:39 pm

Salut ;-),

Bon...mes premières tentatives pour faire un script créant une image s'avèrent un fiasco...

Je te mets un lien vers un tuto :
http://ze.titix.free.fr/gimp/traduction/tuto.html

Mais, ce tuto étant ancien, je ne sais pas s'il fonctionnera sur les versions récentes de Gimp (l'interpréteur de Gimp a changé avec la version 2.4...ce qui m'avait fait "lâcher" les scripts-fu).

[Par exemple, tu peux lire :

Code : Tout sélectionner

Vous devez remplacer tous les _(underscore) par des -(signe 'moins') dans le monde des constantes Script-fu
ce qui n'est plus valable aujourd'hui...


Maintenant, si tu galères trop, j'essayerais de me pencher plus sur le problème...dans la limite de mes compétences (et en fonction de mon temps disponible...j'ai une nouvelle page de BD à coloriser ;-)!
Comme je l'ai déjà dit plusieurs fois : je suis loin d'être un "pro" du script-fu...
Et je n'ai jamais écrit un script partant de zéro...

;-)

En attendant, intervenir sur des posts concernant cet aspect de Gimp m'a donné envie de m'y remettre.
Je vais en profiter pour ré-écrire mes scripts qui n'étaient plus valables depuis Gimp 2.4...
:-)

@+
(_._)
-0|0-

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » ven. sept. 02, 2011 8:43 pm

Merci Gnou.
Je viens de rentrer et je vais lire ce que tu me donne attentivement.
Juste un peu fatigué, mais je m'y remet.

A bientôt.

:ibiggrin:

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » dim. sept. 04, 2011 11:42 am

Salut.

Merci pour tes réponses Gnou.

Au sujet du (car et de ses compères (cdr et compagnies,
Si (car retourne le premier de la liste.
Dans (car ma-liste) (car (cdr (cdr ma-liste))).
Je ne vois pas comment se fait le mouvement.
Et (car ma-liste) (caddr ma-liste), qui débouche aussi sur "A" "B",
encore moins.
Va falloir que je buche sur ça.

Sinon pour continuer un peu ce que nous faisions au dessus,
Je met ce que nous venons de voir.
C'est à dire la création de notre image ainsi que de la variable "theTexte".
Le tout inséré dans notre script de départ.

Image

Au format texte ici : http://cjoint.com/?AIelJrNblXd

Tout semble bien à sa place et pour l'instant nous n'avons qu'une fenêtre qui apparait
et rien d'autre, quand nous appelons notre scripte.

Voyons à présent comment créer un calque de l'image.
Avec ceci nous utiliseront la procédure gimp-layer-new pour créer ce calque.
Ce qui nous est dit pour cela :
- lui transmettant l'ID de l'image que nous venons juste de créer.
- À partir de maintenant, au lieu de lister l'ensemble de la fonction,
nous ne listerons que les lignes que nous lui ajoutons.
- puisque nous avons déclaré toutes les variables locales dont nous aurons besoin,
nous pouvons aussi fermer les parenthèses marquant la fin de nos déclarations de variables.


;création du calque de l'image:
______(theLayer
_____________(car
________________(gimp-layer-new ; Procédure retournée
_________________theImage ; + l'image
_________________theImageWidth ; + lageur
_________________theImageHeight ; + hauteur
_________________RGB-IMAGE ; + format couleur
_________________"layer 1" ; nom du calque
_________________100 ; surface (a confirmer...)
_________________NORMAL ; ...
________________)
_____________)
_______)
_____) ; fin de la variable local

J'ai mis que 100 c'est la surface car j'ai pensé largeur multiplié par hauteur.
Mais je n'en suis pas sûr.
En dessous, le "NORMAL", je ne vois pas de quoi ça parle.
Sinon pour le reste ça me semble lisible.

Alors avec ça on nous donne encore deux lignes :

(gimp-image-add-layer theImage theLayer 0) ; ajouter le calque à l'image
et
(gimp-display-new theImage) ; affichage l'image vide

Là le tuto est un peu plus compliqué car il ne donne pas le positionnement exacte de ces deux lignes.
Mais il propose d'enregistrer le tout et de faire :
sélectionnez la commande suivante "Filtres > Script-Fu > Actualiser" les scripts.

Donc, je présume que ces deux lignes se mettent à la suite, après la fermeture de "let*".
Je rajoute ce que nous venons de voir avec le reste de mon script.
J'enregistre et actualise les scripts dans Gimp.

Et là ...message d'erreur :
Erreur lors du chargement de C:\Users\EasyCash\.gimp-2.6\scripts\TextColorBeta.scm :
Error: eval: unbound variable: theLayer


Alors que l'on me dit :
Lancez le script et une nouvelle image s'affichera. Elle contiendra probablement quelques résidus (couleurs au hasard), parce que nous ne les avons pas effacés. Nous ferons ça plus tard.

Moi je ne trouve même plus celui-ci dans "Fichie > Créer > Text".
Pour la simple raison que "text" n'est plus dans le menu !

Alors où ai-je fait une gaffe puisque pour l'instant je ne fait que suivre le tuto officiel.

Voici le script dans l'état actuel si vous voulez le tester :
http://cjoint.com/11sp/AIemOuqn3GP.htm

Merci d'avance pour votre aide.

Bonne après midi à tous.

:ismile:

Avatar de l’utilisateur
cooboolt
Chef de meute
Messages : 34
Inscription : lun. août 01, 2011 1:42 pm

Re: Comprendre un script fu et son utilisation.

Message par cooboolt » mar. sept. 06, 2011 8:05 am

Salut.

désolé, je suis resté bloqué sur mon script qui comporte une erreur :
Error: eval: unbound variable: theLayer

J'ai déplacé la fin de la commande let* après la création du calque,
mais rien y fait.
Visiblement la création du calque pose problème.

Script dans l'état actuel : http://cjoint.com/11sp/AIgjaHy4X3c.htm

Merci d'avance pour votre aide.

Bonne journée à tous.

Répondre