TOP
tetris Programmez un Tetris en Java
360 pages PDF pour apprendre à votre rythme.
Développez des jeux vidéo en Java.
www.jdevmaker.com
Gimp 2.4
Documentation
Tutoriels
Ressources
Divers

Dernière mise à jour le 07 avr 2008
consultée 18039 fois
Apprendre  ›  Écrire un script-fu  ›  Tutoriel partie 1

 

Scheme, Tutoriel : Initiation partie 1

Ce document est sous un contrat Creative Commons.

 

Qu'est-ce qu'un script-fu ?

Disons qu'un script est écrit dans un langage de programmation qui ne nécessite pas un environnement de développement particulier, contrairement à d'autres langages comme le C ou le Basic, qui doivent être compilés, c'est à dire traduit en langage machine.

Un script-fu est un script destiné a automatiser des tâches que vous pourriez manuellement effectuer avec le logiciel. Le script informe Gimp, pas à pas , sur ce qu'il doit faire.

Ainsi, un script n'offre PAS de nouvelle possibilité à Gimp, tout ce qu'il fait, vous pouvez le faire sans celui-ci dans Gimp. L'avantage est un gain de temps considérable, et la possibilité de reproduire plusieurs fois le script avec des paramètres différents.

C'est écrit en Scheme, un langage assez complexe. Cependant, la majorité des scripts n'utilisent que très peu de Scheme, aussi la connaissance de la base du langage est suffisante. On peut aussi écrire des scripts en Perl (Perl-fu) ou en Python (Python-fu), mais ce ne sera pas abordé ici.

Concrètement, cela s'écrit via le bloc note ou n'importe quel éditeur de texte et c'est enregistré en format texte avec l'extension scm. Le fichier doit-être inséré dans le répertoire adéquat de Gimp.

 

Extrait de http://www.linux-kheops.com/ Par Wolfgang Mauerer.

Certaines parties ont été coupées : (...), d'autres rajoutées : en gras ; j'ai aussi reformaté le texte pour plus de clarté.

 

Qu'en est-il de l'entrée suivante du menu contextuel : Script-Fu ? On peut y trouver des tonnes d'effets différents. La différence entre les Script-Fu et les vrais filtres tient dans le fait que les effets Script-Fu ont été générés par le biais de Scripts Scheme : de petits programmes écrits dans un langage étrange appelé Scheme.

Celui-ci est fortement lié à Lisp dont certains d'entre vous ont déjà dû entendre parler dans le cadre d'applications d'intelligence artificielle. (...) Quant à Guile (GNU Projects Ubiquitous Language for Extension; ou Langage d'Extension Présent Partout dans les Projets GNU) qui peut être intégré dans toutes sortes d'applications, est un dialecte Scheme. Pourquoi alors une application aussi orientée utilisateur que peut l'être Gimp utilise-t-elle un langage aussi compliqué ?

Cette question peut être l'objet d'un immense débat philosophique et religieux sur les langages de programmation, débat sur lequel certaines personnes peuvent passer des années. La quintessence de la question religieuse s'étend en gros entre les deux problèmes suivants : quel éditeur de texte utiliser, et la fin du monde.

Cependant, cet épineux problème peut se résumer en une simple phrase : Lisp et Scheme sont certes des langages flexibles, puissants et élégants mais ils ne sont pas, en tout cas, des langages faciles à apprendre pour le néophyte, en comparaison de langages plus conventionnels.

Pour autant, Script-Fu reste un moyen extraordinaire d'étendre les fonctionnalités de Gimp en proposant des raccourcis pour des opérations effectuées souvent ainsi que pour le traitement automatique et la génération d'images (...). Considérez par exemple votre page personnelle qui utilise des tonnes de boutons graphiques qui ont le même aspect : il vous faudrait faire les mêmes opérations encore et encore pour chaque bouton. À terme, cela devient vite ennuyeux et fatiguant. Le fait de faire un script automatise la chaîne de traitement de telle manière que la seule chose qu'il vous reste à faire soit d'entrer le texte du bouton (en plus, peut-être, de la couleur et d'autres paramètres) : Gimp génère les boutons automatiquement pour vous à l'aide d'un script Script-Fu.

Comme vous le voyez, la possibilité de faire des scripts est une fonctionnalité très puissante qui peut être utile dans de nombreuses situations. Pour faciliter l'écriture de scripts, Marc Lehmann s'est mis en tête d'écrire un logiciel d'extension à Gimp (...) une interface qui permet d'écrire des scripts Gimp en utilisant le langage Perl. Je ne vais pas me lancer dans une de ces discussions traitant des qualités et des faiblesses de Perl ; ceci dit ce langage est bien plus facile à apprendre que le Script-Fu (Scheme) si vous n'avez pas d'expérience en programmation. Par ailleurs, c'est même son principal avantage à mon avis vu que la plupart des scripts CGI et des programmes interfacés Web sont écrits en Perl ce qui fait qu'un grand nombre de personnes connaît ce langage.

 

Exemple

Ci-dessous, un exemple concret de script. Cet exemple simple nous servira d'étude pour toute les parties d'initiation. Ne vous focalisez pas dessus, pour le moment vous ne disposez pas de tous les éléments (à moins que vous ne soyez pas un débutant) pour le comprendre.

 

;; -*-scheme-*-
;; simple layer new script, Alan Horkan 2004
;; so long as remove these comments from your script
;; feel free to use it for whatever you like.

En premier, nous trouvons généralement des lignes de commentaires (tout ce qui vient après un ";" est considéré comme des commentaires). Cela n'a rien d'obligatoire, mais beaucoup de script commence ainsi.

(define (script-fu-layers-new-layer-quick image drawable)
    (let* (
           (width (car (gimp-image-width image)))
           (height (car (gimp-image-height image)))
          (new-layer (car (gimp-layer-new image width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
           )
          (gimp-image-add-layer image new-layer -1)
    )
)

Le script en lui-même

(script-fu-register "script-fu-layers-new-layer-quick"
      "<Image>/Layer/New/Quick Layer"
      "Cree un calque directement, sans dialogue"
      "Auteur"
      "Copyright"
      "Date"
      "" ; types d'images supportés
      SF-IMAGE "Image" 0
      SF-DRAWABLE "Drawable" 0
)

Enfin, le script se termine toujours par le registre. C'est ici que l'on détermine dans quel menu sera accessible le script, les paramètres, les commentaires, le nom du script...

 

Auto-formation

Je vous propose d'étudier la base du Scheme, les procédures de Gimp, et la structure d'un script. Cette initiation sera découpée en chapitre. Ce "cloisonnement", ce découpage en chapitre permet d'aborder un sujet à la fois, ce qui est sans doute préférable dans un premier temps pour le débutant. Cependant toutes les notions sont étroitement reliées et liées ensemble, de sorte qu'il vous faudra aller jusqu'au bout pour avoir véritablement une vue d'ensemble, ce qui augmentera votre compréhension.

Ensuite, pour parfaire votre connaissance, il vous faudra vous plonger dans la base de procédure de Gimp, qui malheureusement est en anglais. Vous pourriez étudier les scripts de la version de distribution de Gimp qui vous apprendrons beaucoup. Enfin existe sur le net un certain nombre de tutoriels et exposés sur le Scheme et les script-fu de niveau inégale, qui majoritairement sont en anglais.

 

 

Valide XHTML 1.0 Strict
Valide CSS 2.0
Valide Accessibilité
Creative Commons License

Tous les documents et ressources sont sous un contrat Creative Commons.