当尝试使用python-fu在GIMP中自动执行照明效果时,我的函数抛出“错误的参数类型”错误

时间:2019-06-12 03:15:40

标签: gimp python-fu

我正在尝试在GIMP的python控制台上运行以下特定代码:

pdb.plug_in_lighting(1,img,all_layers[0],0,0,FALSE,FALSE,0,1,[255,255,255],0,0,0,-1,-1,1,0.20,2.15,0.50,0.50,18,0,FALSE,FALSE,FALSE)

并且我不断收到“ TypeError:错误的参数类型”。

以下是该插件的参数列表:

 pdb.plug_in_lighting.params
((0, 'run-mode', 'The run mode { RUN-INTERACTIVE (0), RUN-NONINTERACTIVE (1) }'), (13, 'image', 'Input image'), (16, 'drawable', 'Input drawable'), (16, 'bumpdrawable', 'Bumpmap drawable (set to 0 if disabled)'), (16, 'envdrawable', 'Environmentmap drawable (set to 0 if disabled)'), (0, 'dobumpmap', 'Enable bumpmapping (TRUE/FALSE)'), (0, 'doenvmap', 'Enable envmapping (TRUE/FALSE)'), (0, 'bumpmaptype', 'Type of mapping (0=linear,1=log, 2=sinusoidal, 3=spherical)'), (0, 'lighttype', 'Type of lightsource (0=point,1=directional,3=spot,4=none)'), (10, 'lightcolor', 'Lightsource color (r,g,b)'), (3, 'lightposition-x', 'Lightsource position (x,y,z)'), (3, 'lightposition-y', 'Lightsource position (x,y,z)'), (3, 'lightposition-z', 'Lightsource position (x,y,z)'), (3, 'lightdirection-x', 'Lightsource direction [x,y,z]'), (3, 'lightdirection-y', 'Lightsource direction [x,y,z]'), (3, 'lightdirection-z', 'Lightsource direction [x,y,z]'), (3, 'ambient-intensity', 'Material ambient intensity (0..1)'), (3, 'diffuse-intensity', 'Material diffuse intensity (0..1)'), (3, 'diffuse-reflectivity', 'Material diffuse reflectivity (0..1)'), (3, 'specular-reflectivity', 'Material specular reflectivity (0..1)'), (3, 'highlight', "Material highlight (0..->), note: it's exponential"), (0, 'antialiasing', 'Apply antialiasing (TRUE/FALSE)'), (0, 'newimage', 'Create a new image (TRUE/FALSE)'), (0, 'transparentbackground', 'Make background transparent (TRUE/FALSE)'))

我只是不知道哪个参数是错误的...

我希望最终能够对该功能进行多层迭代,以便每次都对其进行一些微调,以创造出无与伦比的聚光灯外观。

1 个答案:

答案 0 :(得分:1)

Python API的文档经常会引起误解,因为它确实是Scheme API的文档。特别是没有位置run-mode参数(如果您确实坚持,可以将其用作命名参数),因此从代码的外观来看,第一个参数应该是图像。

通常,您可以通过以下方式获得呼叫的可用模板:

  • 打开Python控制台(Filters>Python-fu>Console
  • 点击“浏览...”按钮
  • 搜索您的通话(使用左侧面板顶部的搜索/过滤器栏)
  • 点击“应用”按钮以在Python控制台中复制用于通话的模板
  • 在其中执行(在编辑参数后)或根据需要复制/粘贴到您的代码中。