2017-05-02 1 views
0

j'ai ajouté le script python suivant pour /usr/lib/gimp/2.0/plug-ins dossierErreur: (1) nombre incorrect d'arguments pour la ligne de commande python-fu exécution

#!/usr/bin/python 

from gimpfu import * 

def scale(imageName): 
    pass 

register(
    "my", 
    "", 
    "", 
    "", 
    "", 
    "2017", 
    "<Image>/Image/Hi..", 
    "RGB*, GRAY*", 
    [(PF_STRING, 'file_name', 'file_name', 'logo.png')], 
    [], 
    scale) 

main() 

Exécution via

gimp --no-interface -b '(python-fu-my RUN-NONINTERACTIVE "logo.png")' -b '(gimp-quit 0)' 

retours

batch command experienced an execution error: Error: (: 1) Invalid number of arguments for python-fu-my (expected 4 but received 2)

Dans le navigateur de procédure GIMP une re 4 paramètres en effet, mais il ne devrait pas les attendre si la procédure est exécutée via la ligne de commande, devrait-il?

Parameters

J'ai suivi les docs. Qu'est-ce qui ne va pas?

+0

essayez de changer temporairement 'imageName' en' * imageName', qui rassemblera tous les arguments fournis à la fonction et ne se plaindra pas s'il y en a trop/peu. Ensuite, vous pouvez les imprimer et voir ce qui est réellement passé. –

Répondre

0

Vous ne devez pas enregistrer la fonction en tant que plug-in et vous devez l'appeler directement (scale("logo.png")). Mais votre code doit charger explicitement le fichier image pour obtenir un objet gimp.Image.

+0

salut, si je l'exécute directement je reçois * gimp_wire_write_msg: le protocole de fil n'a pas été initialisé * erreur – user1264304

+0

"Exécution directe" stll signifie en utilisant Gimp. Quelque chose comme 'gimp --no-interface -b '(échelle logo.png")' -b '(gimp-quit 0)' '. Vous devrez peut-être modifier le chemin python et faire une importation explicite de votre script: ' gimp-idf --batch-interpreter python-fu-eval -b 'importe sys; sys.path = ["."] + sys.path; importe yourscript; yourscript.run ("logo.png")' -b ' pdb.gimp_quit (1) ' – xenoid