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-scri ... orial.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 : Tout sélectionner
(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))
)
)
)
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 : Tout sélectionner
(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))
)
)
)
)
Code : Tout sélectionner
$ gimp-2.8 -i --verbose -b "(script-fu-niveau \"/tmp/png/*.png\" )" -b "(gimp-quit 0)"
Code : Tout sélectionner
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
Pouvez-vous m'expliquer à quoi je dois lier cette variable ?