#1 Le 25/07/2013, à 20:06
- legion31000
GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Bonjour, je suis actuellement à la recherche d'information pour me premettre de finaliser le script-fu sur lequel je travail.
C'est une aide pour mon boulot, crée un Batch de Flip Horizontal pour un dossier d'environ 100 images en jpg.
Voici le début de mon script:
; Societe_prog
(define (script-fu-batch-flip-horizontal globexp suffix)
(let* ((filelist (cadr (file-glob globexp 1))))
(while (not (null? filelist))
(let* ((fname (car filelist))
(img (car (gimp-file-load RUN-NONINTERACTIVE fname fname))))
(let* (gimp-flip 0)
(gimp-file-save RUN-NONINTERACTIVE img xdrawable (string-append (car (strbreakup fname ".")) suffix) (string-append (car (strbreakup fname ".")) suffix))
)
(set! filelist (cdr filelist)))))
)
; Register in Gimp Menu
(script-fu-register "script-fu-batch"
_"_FILP-SYM"
"Flip H and save them in new files"
"SEDX"
"2013, ***"
SF-STRING "Copier la directory" "/home/USERImages/my_job/*.jpg"
SF-STRING "Suffix" "_sym.jpg")
(script-fu-menu-register "script-fu-batch"
"<Toolbox>/_SEDX")
C'est un bon début, j'ai l'icone du script dans la barre de menu, j'ai le menu qui s'ouvre et après, l'erreur suivante:
Erreur lors de l'exécution de script-fu-batch :
Error: (<unknown> : 152702272) not enough arguments
Bref je pense qu'il y a un couac, mais je ne vois pas où.
Merci de ne pas proposer de solution autre que via GIMP, unique logiciel de retouche d'image que je peux utiliser avec mon client.
Je vous remercie d'avance.
Dernière modification par legion31000 (Le 28/10/2015, à 23:01)
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#2 Le 25/07/2013, à 21:39
- david96
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Je connais bien GIMP, mais je dois avouer que j'ai aucune connaissance dans Script-Fu.
Je ne serai pas d'une très grande aide, mais je vois que le message d'erreur te dit qu'il manque des arguments, possible que tu dois en préciser plus pour la fonction.
Hors ligne
#3 Le 26/07/2013, à 10:22
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Merci, en effet, j'ai bien vu cette requette d'arguments.
J'ai un peu amélioré mon script, mais je pense que le fonction flip-horizontal n'est pas facile à mettre en place.
Je ne comprends pas non plus à quoi servent les variables "image" et "drawable"
Je posterai une mise à jour du script prochainement.
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#4 Le 26/07/2013, à 11:00
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Voici une version un peu plus sympa.
Mais qui bug encore !!
;; Définitions des filtres utiliser pour le traitement des images
(define (script-flip image
drawable
)
(gimp-image-flip image drawable 0) ;; flip-horizontal
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;; Fonction de traitement par lot des images
(define (script-flip dirname-in
dirname-out
)
(let* ((filelist (cadr (file-glob (string-append dirname-in "\\*.jpg") 1)))) ;; Sélection du dossier à traiter avec SF-DIRNAME
(while (not (null? filelist)) ;; et listage des images (.jpg) dans le dossier sélectionné
(let* ((filename-in (car filelist)) ;; Définition de la variable filename-in
(image (car (gimp-file-load RUN-NONINTERACTIVE filename-in filename-in))) ;; Définition de la variable image
(drawable (car (gimp-image-get-active-layer image))) ;; Définition de la variable drawable
(filename-out (string-append dirname-out "\\" (car (gimp-image-get-name image)))) ;; Définition de la variable filename-out
)
(script-flip image drawable) ;; Traitement de l’image
(file-jpeg-save RUN-NONINTERACTIVE image drawable filename-out filename-out 1 0 1 0 "" 0 1 0 0) ;; Sauvegarde de l'image
(gimp-image-delete image) ;; Fermeture de l'image
)
(set! filelist (cdr filelist))
)
)
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;; Registre du script
(script-fu-register "script-flip" ;; nom du script
"<Image>/SEDX/FLIP BATCH" ;; Position du script dans le menu
"Batch Processing" ;; Commentaires
"ALTRAN SO" ;; Auteur
"SEDX" ;; Copyright
"2013" ;; Date
"" ;; Types d'images supportés par le script
SF-DIRNAME "Dossier" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
SF-DIRNAME "Dossier de sortie" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
) ; fin du register
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#5 Le 26/07/2013, à 13:28
- pingouinux
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Bonjour,
Je ne connais pas script-fu, mais utilise habituellement python-fu.
Il semble que gimp-image-flip ait un argument en trop (drawable).
Je ne peux pas en dire plus, désolé…:(
Hors ligne
#6 Le 26/07/2013, à 13:48
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Merci pour ta réponse.
Voici la dernière modification, ça avance, ça ouvre et enregistre les images sans erreurs, mais sans faire la fonction FLIP, que je n'arrive pas à intégrer.
(define (script-fu-foto-auv image
drawable
flip
)
(gimp-flip drawable 0) ;; flip image
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;; Fonction de traitement par lot des images
(define (script-flip dirname-in
dirname-out
)
(let* ((filelist (cadr (file-glob (string-append dirname-in "\\*.jpg") 1)))) ;; Sélection du dossier à traiter avec SF-DIRNAME
(while (not (null? filelist)) ;; et listage des images (.jpg) dans le dossier sélectionné
(let* ((filename-in (car filelist)) ;; Définition de la variable filename-in
(image (car (gimp-file-load RUN-NONINTERACTIVE filename-in filename-in))) ;; Définition de la variable image
(drawable (car (gimp-image-get-active-drawable image))) ;; Définition de la variable drawable
(filename-out (string-append dirname-out "\\" (car (gimp-image-get-name image)))) ;; Définition de la variable filename-out
)
(file-jpeg-save RUN-NONINTERACTIVE image drawable filename-out filename-out 1 0 1 0 "" 0 1 0 0) ;; Sauvegarde de l'image
(gimp-image-delete image) ;; Fermeture de l'image
)
(set! filelist (cdr filelist))
)
)
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;; Registre du script
(script-fu-register "script-flip" ;; nom du script
"<Image>/SEDX/FLIP BATCH" ;; Position du script dans le menu
"Batch Processing" ;; Commentaires
"***" ;; Auteur
"SEDX" ;; Copyright
"2013" ;; Date
"" ;; Types d'images supportés par le script
SF-DIRNAME "Dossier" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
SF-DIRNAME "Dossier de sortie" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
) ; fin du register
Pour ce qui est de l'argument de trop, je l'ai supprimé, mais rien de nouveau pour le moment.
Quand je lance le script, je vois bien le "load" et "save" mais pas le "gimp-flip" dans la console de script.
Dernière modification par legion31000 (Le 28/10/2015, à 23:00)
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#7 Le 26/07/2013, à 14:24
- pingouinux
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Tu as changé pas mal de choses.
Tu n'appelles pas script-fu-foto-auv, dans laquelle gimp-flip est appelée.
Hors ligne
#8 Le 26/07/2013, à 14:30
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Oui c'est bien ce que je pense, j'ai bien deux scripts, celui pour le filp horizontal et l'autre pour le traitement par lot.
Par contre je ne sais pas où l'intégrer dans "script-flip"
je dirai bien entre
(drawable (car (gimp-image-get-active-drawable image)))
et -->
(filename-out (string-append dirname-out "\\" (car (gimp-image-get-name image))))
Mais comment rappeler le script script-fu-foto-auv ?
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#9 Le 26/07/2013, à 14:38
- pingouinux
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Je dirais, après la définition des variables
let* (
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
)
et juste avant :
(file-jpeg-save RUN-NONINTERACTIVE image drawable filename-out filename-out 1 0 1 0 "" 0 1 0 0)
Hors ligne
#10 Le 26/07/2013, à 14:53
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Ok je vois, par contre, pas évident de trouver la bonne commande de rappel de script.
let* (
(script-fu-foto-auv) ??
)
Je vais tester, si ça fonctionne, je pense finir par intéreger le premier script dans le deuxième plutôt que de faire un rappel.
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#11 Le 26/07/2013, à 15:19
- pingouinux
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Tout simplement ceci (je ne suis pas certain de la syntaxe) ?
let* (
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
(drawable (gimp-flip drawable 0)) ;; flip image
)
(file-jpeg-save RUN-NONINTERACTIVE image drawable filename-out filename-out 1 0 1 0 "" 0 1 0 0)
Hors ligne
#12 Le 29/07/2013, à 10:11
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
ça veux presque, voici le message d'erreur après mise à jour:
Error: Procedure execution of gimp-image-flip failed on invalid input arguments:
La procédure « gimp-image-flip » a été appelée avec un ID erroné pour le paramètre « image ».
Très probablement un greffon est en train d'essayer de travailler sur une image qui n'existe plus
.
Petit problème de hiérachie des fonctions, ça avance ^^
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#13 Le 29/07/2013, à 12:17
- legion31000
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Voici la version finale !!
Par tatonnement, j'ai trouvé le bon ordre à avoir entre les différentes fonctions.
;; Fonction de traitement par lot des images
(define (script-flip dirname-in
dirname-out
)
(let* ((filelist (cadr (file-glob (string-append dirname-in "\\*.jpg") 1)))) ;; Sélection du dossier à traiter avec SF-DIRNAME
(while (not (null? filelist)) ;; et listage des images (.jpg) dans le dossier sélectionné
(let* ((filename-in (car filelist)) ;; Définition de la variable filename-in
(image (car (gimp-file-load RUN-NONINTERACTIVE filename-in filename-in))) ;; Définition de la variable image
(drawable (car (gimp-image-get-active-drawable image))) ;; Définition de la variable drawable
(filename-out (string-append dirname-out "\\" (car (gimp-image-get-name image))))) ;; Définition de la variable filename-out
(gimp-flip drawable 0) ;; Définition de la modification de l'image
(file-jpeg-save RUN-NONINTERACTIVE image drawable filename-out filename-out 1 0 1 0 "" 0 1 0 0) ;; Sauvegarde de l'image
(gimp-image-delete image) ;; Fermeture de l'image
)
(set! filelist (cdr filelist))
)
)
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;; Registre du script
(script-fu-register "script-flip" ;; nom du script
"<Image>/SEDX/FLIP BATCH" ;; Position du script dans le menu
"Batch Processing" ;; Commentaires
"********" ;; Auteur
"SEDX" ;; Copyright
"2013" ;; Date
"" ;; Types d'images supportés par le script
SF-DIRNAME "Dossier" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
SF-DIRNAME "Dossier de sortie" "" ;; Demande à The Gimp d’afficher un widget permettant de sélectionner un répertoire
)
C'est donc résolu (enfin auto-résolu, comme souvent !!)
Dernière modification par legion31000 (Le 28/10/2015, à 23:00)
PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net
Hors ligne
#14 Le 29/07/2013, à 15:30
- david96
Re : GIMP - Script-Fu avec Batch pour Flip Horitontal [Résolu]
Merci pour le partage
Hors ligne