Voir les messages sans réponses | Voir les sujets actifs Nous sommes le 23 Juin 2018, 00:16



Répondre au sujet  [ 8 messages ] 
Demande d'aide pour écrire un script-fu 
Auteur Message
P'tit timide
P'tit timide

Inscription: 04 Jan 2016, 19:32
Messages: 6
Répondre en citant le message
Message Demande d'aide pour écrire un script-fu
Bonjour à tous,

Utilisateur de Gimp depuis de nombreuses années, je suis sous Linux (Mageia).

Pour une importante série de photos, j'applique un traitement assez répétitif, et je commence à en avoir assez.

J'ai donc voulu scripter cela, bien que n'ayant aucune connaissance en programmation, ni en anglais d'ailleurs, que je n'ai jamais appris, ce qui est plutôt handicapant.

Cela fait donc plusieurs jours que je lis des tutos (à commencer par http://docs.gimp.org/fr/gimp-using-script-fu-tutorial.html) et que j'examine des script-fu trouvés sur http://registry.gimp.org/glossary/a

J'ai finalement essayé d'adapter ce script :
Code:
(define (batch-crop-center pattern
                           width
                           height)
    (let* ((filelist (cadr (file-glob pattern 1))))
        (while (not (null? filelist))
            (let* ((filename (car filelist))
                (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename )))
                (drawable (car (gimp-image-get-active-layer image))))
                (let* ((original-width (car (gimp-image-width image)))
                (original-height (car (gimp-image-height image)))
                )
                (if (<= (/ original-width original-height) (/ width height))
                    (gimp-image-crop image original-width (* original-width (/ height width)) 0 (/ (- original-height (* original-width (/ height width))) 2) )
                    (gimp-image-crop image (* original-height (/ width height)) original-height (/ (- original-width (* original-height (/ width height))) 2) 0)
                )
                )
               
                (set! drawable (car (gimp-image-get-active-layer image)))
                (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename))
                ;(gimp-image-delete image))
         
            (set! filelist (cdr filelist))
        )
    )
)
trouvé sur http://registry.gimp.org/node/27360, parce qu'il n'utilse pas d'interface graphique, ce dont je n'ai pas besoin dans un premier temps.

Ce que je veux, c'est prendre toutes les images d'un dossier, et, dans un premier temps, dupliquer le calque et appliquer une correction automatique des niveaux.

Par la suite, quand j'arriverai à produire cette première étape, le but final est de produire plusieurs calques avec des modes de calques différents, puis en graphique, voir ce qui rend le mieux.

J'ai donc écrit ceci :
Code:
(define (sript-fu-niveau pattern)
    (let* ((filelist (cadr (file-glob pattern 1))))
        (while (not (null? filelist))
            (let* ((filename (car filelist))
      (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename )))
      (drawable (car (gimp-image-get-active-layer image))))
      (set! width (car (gimp-image-width image)))
      (set! height (car (gimp-image-height image)))
      (let* new-layer (car ((gimp-layer-new image width height RGBA-IMAGE "niveau" 100 NORMAL))) ; création d'un nouveau calque avec, en paramètres, la largeur et la hauteur renvoyées, son mode image, son nom, son opacité et son mode de calque. Et définition de la variable "new-layer" dont on aura besoin tout de suite.
      (gimp-image-add-layer image new-layer -1) ; sert à ajouter ce calque à l'image. La valeur -1 permet d'insérer le calque au-dessus du calque actif.
      (gimp-levels-stretch new-layer) ; applique un niveau automatique
      (set! drawable (car (gimp-image-get-active-layer image)))
                (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename))
            (set! filelist (cdr filelist))
       )
    )
     )
 )

mais quand je l'exécute ainsi:
Code:
$ gimp-2.8 -i --verbose -b "(script-fu-niveau \"/tmp/png/*.png\" )" -b "(gimp-quit 0)"
, il me répond :
Code:
Aucun interpréteur batch indiqué, utilisation de « plug-in-script-fu-eval » par défaut.
batch command experienced an execution error:
Error: ( : 1) eval: unbound variable: script-fu-niveau

et je n'arrive pas à trouver pourquoi.

Pouvez-vous m'expliquer à quoi je dois lier cette variable ?

_________________
* Gimp 2.8.14 sur Mageia5 *


04 Jan 2016, 20:23
Profil
Bavardeur
Bavardeur
Avatar de l’utilisateur

Inscription: 24 Fév 2015, 22:18
Messages: 145
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Je connais mal script-fu. J'utilise Python-fu, c'est plus facile et plus puissant.

Cela dit, dès que j'entends batch et Gimp dans le même phrase, je regarde d'abord si ImageMagick ne peut pas faire le boulot (soit en l'appelant comme shell, soit en utilisant es bindings Python).

Cela dit, y'a peut-être un 'script-fu' de trop; appelle ta fonction 'niveau', il est possible que le préfixe 'script-fu' soit implicite.

Sinon j'ai un exemple de batch Gimp, mais c'est du Python:)


05 Jan 2016, 15:14
Profil
P'tit timide
P'tit timide

Inscription: 04 Jan 2016, 19:32
Messages: 6
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Merci Ofnuts,
Ofnuts a écrit:
Je connais mal script-fu. J'utilise Python-fu, c'est plus facile et plus puissant.

Tu connais des tutos en français qui détaillent commen faire en Python-fu ?
Ofnuts a écrit:
Cela dit, dès que j'entends batch et Gimp dans le même phrase, je regarde d'abord si ImageMagick ne peut pas faire le boulot (soit en l'appelant comme shell, soit en utilisant es bindings Python).

ImageMagick est en anglais, mais je ne crois pas qu'il fasse ce que je désire : multiplier les calques, leur appliquer à chacun un mode de calque et un traitement différent.
Ofnuts a écrit:
Cela dit, y'a peut-être un 'script-fu' de trop; appelle ta fonction 'niveau', il est possible que le préfixe 'script-fu' soit implicite.

J'ai trouvé ce qui n'allait pas : j'avais écrit 'sript-fu' et j'appelais 'script-fu'.

Après correction, j'ai maintenant une autre erreur :
Code:
batch command experienced an execution error:
Error: ( : 1) not enough arguments

Pas très explicite...
Ofnuts a écrit:
Sinon j'ai un exemple de batch Gimp, mais c'est du Python:)

Ben, si c'est commenté explicitement en français, ça m'intéresse.
Merci d'avance.

_________________
* Gimp 2.8.14 sur Mageia5 *


05 Jan 2016, 16:46
Profil
Bavardeur
Bavardeur
Avatar de l’utilisateur

Inscription: 24 Fév 2015, 22:18
Messages: 145
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
1) non, mais tu peux facilement trouver des tutos en Français sur Python, c'est un langage nettement plus populaire que Scheme (aka script-fu). Cela dit, je viens d'avoir récemment une discussion sur un forum Python ou il s'avérait que l'auteur des questions avait suivi un tutoriel de merde. C'est l'avantage des bouquins, l'auteur est quand même supposé avoir un peu plus de crédibilité que le bloggeur/youtubeur lambda.

2) Avec ImageMagick tu ne vois pas de calques mais des images individuelles que tu compose pour faire ton image finale. Et il y a plus de modes de composition qu'avec Gimp: http://www.imagemagick.org/Usage/compose/

3) Pas d'idée. Tu peux demander sur GimpForums ou GimpChat

4) Pas terriblement commenté et en Anglais. Mais tu peux jeter un oeil: https://www.dropbox.com/s/ta1ueqkn0u6f0 ... h.zip?dl=0


06 Jan 2016, 02:14
Profil
P'tit timide
P'tit timide

Inscription: 04 Jan 2016, 19:32
Messages: 6
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Ofnuts a écrit:
2) Avec ImageMagick tu ne vois pas de calques mais des images individuelles que tu compose pour faire ton image finale. Et il y a plus de modes de composition qu'avec Gimp: http://www.imagemagick.org/Usage/compose/

Bon, je vais voir si je trouve des explications en français pour imagemagick...

Ofnuts a écrit:
3) Pas d'idée. Tu peux demander sur GimpForums ou GimpChat

Toujours en anglais...
Je vais essayer sur ces forums, ou l'on parle un peu de scheme :
http://www.commentcamarche.net/forum/
https://openclassrooms.com/forum/

Ofnuts a écrit:
4) Pas terriblement commenté et en Anglais. Mais tu peux jeter un oeil: https://www.dropbox.com/s/ta1ueqkn0u6f0 ... h.zip?dl=0

Effectivement, pas beaucoup de commentaires :(

_________________
* Gimp 2.8.14 sur Mageia5 *


06 Jan 2016, 06:59
Profil
P'tit timide
P'tit timide

Inscription: 04 Jan 2016, 19:32
Messages: 6
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Ofnuts a écrit:
Je connais mal script-fu. J'utilise Python-fu, c'est plus facile et plus puissant.


Je vois que tu en es un spécialiste :
http://gimpforums.com/thread-debugging-python-fu-scripts

_________________
* Gimp 2.8.14 sur Mageia5 *


06 Jan 2016, 08:07
Profil
Moulin à paroles
Moulin à paroles

Inscription: 30 Déc 2004, 18:08
Messages: 266
Localisation: Nord (France)
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Ofnuts a écrit:
Je connais mal script-fu. J'utilise Python-fu, c'est plus facile et plus puissant.


Pas tout à fait d'accord, mais bon... Je ne fais pas trop de script-fu non plus, mais j'ai déjà pu testé les deux langages pour d'autres choses.

Python est apparemment plus facile, mais assez brut de décoffrage, et pas toujours plus performant (notamment en vitesse d'exécution) que Scheme , un peu plus souple, avec lequel sont quand même écrits la plupart des script-fu de Gimp.

Cela dit, Python est effectivement plus populaire, sans doute à cause de son apparente facilité, et on trouve donc beaucoup de tutoriels pour s'y initier, mais il faut faire le tri (quantité, et/ou popularité, n'est pas toujours synonyme de qualité).

_________________
Gimp 2.8.16 - Flowblade 1.10 - Blender 2.78, sur Lubuntu 16.04 (Intel Celeron CPU 2.66GHz - 1280MiB)


06 Jan 2016, 16:25
Profil
Bavardeur
Bavardeur
Avatar de l’utilisateur

Inscription: 24 Fév 2015, 22:18
Messages: 145
Répondre en citant le message
Message Re: Demande d'aide pour écrire un script-fu
Bebert a écrit:
Ofnuts a écrit:
Je connais mal script-fu. J'utilise Python-fu, c'est plus facile et plus puissant.


Pas tout à fait d'accord, mais bon... Je ne fais pas trop de script-fu non plus, mais j'ai déjà pu testé les deux langages pour d'autres choses.

Python est apparemment plus facile, mais assez brut de décoffrage, et pas toujours plus performant (notamment en vitesse d'exécution) que Scheme , un peu plus souple, avec lequel sont quand même écrits la plupart des script-fu de Gimp.

Cela dit, Python est effectivement plus populaire, sans doute à cause de son apparente facilité, et on trouve donc beaucoup de tutoriels pour s'y initier, mais il faut faire le tri (quantité, et/ou popularité, n'est pas toujours synonyme de qualité).


C'est vrai que Scheme, ça date des années 50, ça a eu le temps de prendre de la patine. Scheme n'est pas plus souple que Python, et si les scripts Gimp sont surtout écrits avec, c'est parce que c'est le langage de script historique, et le choix de l'interpreteur s'est fait à l'époque pour des raisons très techniques, l'interpréteur est très léger (et Python, qui n'a que 5 ans de plus que Gimp, devait manquer de maturité/popularité à l'époque). De ma fenêtre de modérateur sur GimpForums, je vois les débutants qui se tirent des balles avec Scheme pour faire des trucs qui sont tout cons à faire en Python. En plus Script-fu est très restreint à Gimp, tandis qu'avec Python tu peux utiliser des librairies existantes pour faire tout et n'importe quoi. Va lire un XML, un XLS ou même un CSV avec un Script-fu...


07 Jan 2016, 02:43
Profil
Afficher les messages postés depuis:  Trier par  
Répondre au sujet   [ 8 messages ] 

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Forum style by ST Software for PTF.
Traduction par: phpBB-fr.com