J'essaye d'écrire un plugin Python-Fu pour GIMP, mais en ajoutant plus de 4 paramètres d'entrée (incluant les paramètres Image et Drawable), le script ne fonctionnera pas courir du tout. J'ai essayé ceci avec différents types de paramètres d'entrée et ils produisent tous le même résultat. Quelqu'un at-il une idée de la raison pour laquelle cela se produit? Est-ce que je manque quelque chose d'évident?Le script GIMP Python-Fu ne fonctionne pas avec plus de 4 paramètres
register(
"python_fu_guide_maker",
"Guide Maker",
"Creates guides with specified spacing.",
"MrKagouris", "", "2017",
"Guide Maker",
"*",
[
(PF_IMAGE, "image", "Input Image", None),
(PF_DRAWABLE, "drawable", "Input Layer", None),
(PF_INT, "hspace", "Horizontal Spacing", None),
(PF_INT, "vspace", "Vertical Spacing", None),
(PF_BOOL, "percent", "By percent?", None)
],
[],
guide_maker,
menu="<Image>/Image/Guides"
)
EDIT:
est en dessous du plein, le script entièrement fonctionnel, y compris le code Python.
#!/usr/bin/env python
from gimpfu import *
def guide_by_num(image, hspace, vspace):
imageHeight = pdb.gimp_image_height(image)
imageWidth = pdb.gimp_image_width(image)
if (hspace <= 0 or vspace <= 0):
return # Input validity check.
hGuides = int(imageHeight/hspace) # Calculates the
vGuides = int(imageWidth/vspace) # number of guides.
for i in range(2):
pdb.gimp_image_add_hguide(image, i * imageHeight) # Adds guides to
pdb.gimp_image_add_vguide(image, i * imageWidth) # image edges.
for i in range(1, hGuides): # Adds the horizontal
pdb.gimp_image_add_hguide(image, i * hspace) # guides.
for i in range(1, vGuides): # Adds the vertical
pdb.gimp_image_add_vguide(image, i * vspace) # guides.
def guide_by_percent(image, hspace, vspace): #Not used.
imageHeight = pdb.gimp_image_height(image)
imageWidth = pdb.gimp_image_width(image)
hspace = int(hspace * (imageWidth * 0.01))
vspace = int(vspace * (imageHeight * 0.01))
if (hspace <= 0 or vspace <= 0):
return
hGuides = int(imageHeight/hspace)
vGuides = int(imageWidth/vspace)
for i in range(2):
pdb.gimp_image_add_hguide(image, i * imageHeight)
pdb.gimp_image_add_vguide(image, i * imageWidth)
for i in range(1, hGuides):
pdb.gimp_image_add_hguide(image, i * hspace)
for i in range(1, vGuides):
pdb.gimp_image_add_vguide(image, i * vspace)
def guide_maker(image, drawable, hspace, vspace):
guide_by_num(image, hspace, vspace)
register(
"python_fu_guide_maker",
"Guide Maker",
"Creates guides with specified spacing.",
"MrKagouris", "", "2017",
"Guide Maker",
"*",
[
(PF_IMAGE, "image", "Input Image", None),
(PF_DRAWABLE, "drawable", "Input Layer", None),
(PF_INT, "hspace", "Horizontal Spacing", None),
(PF_INT, "vspace", "Vertical Spacing", None),
#(PF_BOOL, "percent", "By percent?", None)
],
[],
guide_maker,
menu="<Image>/Image/Guides"
)
main()
probablement pas un problème de trop de paramètres, il y a des scripts autour avec trop de paramètres adapter un écran. Mais en pratique, je n'ai pas réussi à faire fonctionner votre code, même en gardant le PF_IMAGE (btw, vous n'avez pas besoin de PF_DRAWABLE pour ce script). Il doit y avoir quelque chose de subtil qui fait échouer l'inscription (ou qui n'arrive pas du tout). Pouvez-vous modifier votre question pour ajouter le code qui s'inscrit correctement? – xenoid
@xenoid Terminé. Cependant, la seule différence entre le code fonctionnel et le code non fonctionnel est exactement ce même paramètre d'entrée supplémentaire. – MrKagouris
Vous savez que votre fonction Python actuelle ('guide_maker') doit correspondre à la signature que vous passez pour vous inscrire, n'est-ce pas? – jsbueno