为什么我的GIMP Python插件在我的Ubuntu Linux Box上不起作用?

时间:2015-09-15 21:27:01

标签: python linux gimp

我正在尝试为GNU Image Manipulation Plug-In编写自己的Python插件。我在此网址上关注了本教程:http://gimpbook.com/scripting/slides/index.html。我更改了一些变量名称并将脚本命名为不同但基本上它是相同的脚本。

从交互式GIMP Python shell调用脚本时,该脚本可以正常工作。我通过鼠标进行访问:" 过滤器 - > Python-Fu - >控制台&#34 ;.这里hello_world()函数有效。

但是,当我将插件放入.gimp2.8/plugins/文件夹或/usr/lib/gimp/2.0/plug-ins后,我在Plug-In Browser后无法看到插件Help -> Plug-In Browser }}。有谁知道我错过了什么?

此致

我的Python GIMP插件的源代码如下......

#! /usr/bin/env python 


from gimpfu import * 

def hello_world(initstr, font, size, color):
    img = gimp.Image(1, 1, RGB) 
    gimp.set_foreground(color)
    layer = pdb.gimp_text_fontname(img, None, 0, 0, initstr, 10, True, size, PIXELS, font) 
    img.resize(layer.width, layer.height, 0, 0)
    gimp.Display(img) 

register( 
  "pythonic_easier_gimp",
  "Hello Gimp Image", "Hello gimp image",
  "My Name", "My Name", "2015", 
  "Easier gimp...",
  "",
  [ 
     (PF_STRING, "string", "String", 'Hello, Gimp!'),
     (PF_FONT, "font", "Font face", "Sans")
     (PF_SPINNER, "size", "Font size", 50, (1, 3000, 1)),
     (PF_COLOR, "color", "Text color", (1.0, 0.0, 0.0))

  ], 
  [], 
  easier_gimp, menu="<Image>/File/Create")


main()

3 个答案:

答案 0 :(得分:2)

如果菜单上没有显示脚本,则表示上面的“register”和“main”调用没有运行。一种可能性是您没有使用exectutable权限标记Python文件。 (检查文件属性,或在其上运行chmod 777 myfile.py

另一种可能性是Python语法错误 - 可能很难发现列表 - 检查语法错误,尝试将脚本作为来自shell的普通Python程序运行:$ python myfile.py - 应该产生ImportError。如果您看到SyntaxError,请改为修改。

最后,在插件到位的情况下,从终端启动它,而不是菜单 - 如果GIMP找到你的插件但偶然发现错误,它应显示Wire read error终端输出:它还可能表示Python语法错误,或者对register的调用不正确(参数太少或太多)。由于此时您已排除语法错误,请仔细检查参数计数为register

到目前为止,当你有固定的东西时,它应该出现在菜单中。

答案 1 :(得分:0)

我找到了解决方案!我在线阅读了一些教程,并使用PyDev插件切换到不同的开发环境Eclipse。 PyDev能够在过于复杂的register()函数中指出语法错误。

#! /usr/bin/env python 

from gimpfu import *

def wonka():
    img = gimp.Image(1, 1, RGB)
    gimp.set_foreground('purple')
    layer = pdb.gimp_text_fontname(img, None, 0, 0, 'Willy Wonka!', 10, True, 90, PIXELS, 'comic sans')
    img.resize(layer.width, layer.height, 0, 0)
    gimp.Display(img)



register(
         "wonka",
         "Prints a message from Willy Wonka",
         "Prints a message from Willy Wonka",
         "User3870315",
         "User3870315",
         "2015",

         "<Toolbox>/Tools/Wonka",
         "",
         [],
         [],
         wonka)


main()

这会显示在Filters -> Python-Fu -> Console -> Browse中。它也显示在Tools下的工具栏中。

这些链接有助于:

答案 2 :(得分:0)

代码的2个问题突出了我的函数/调用不匹配和丢失的分隔逗号

(PF_FONT, "font", "Font face", "Sans") #<--missing comma
def hello_world(initstr, font, size, color): #<--Defined function hello_world()
easier_gimp, menu="<Image>/File/Create") #<--plugin calls easier_gimp()

因此,添加逗号并将hello_world重命名为easier_gimp可以使该插件正常工作。

#! /usr/bin/env python


from gimpfu import *

def easier_gimp(initstr, font, size, color):
    img = gimp.Image(1, 1, RGB)
    gimp.set_foreground(color)
    layer = pdb.gimp_text_fontname(img, None, 0, 0, initstr, 10, True, size, PIXELS, font)
    img.resize(layer.width, layer.height, 0, 0)
    gimp.Display(img)

register(
  "pythonic_easier_gimp",
  "Hello Gimp Image", "Hello gimp image",
  "My Name", "My Name", "2015",
  "Easier gimp...",
  "",
  [
     (PF_STRING, "string", "String", 'Hello, Gimp!'),
     (PF_FONT, "font", "Font face", "Sans"),
     (PF_SPINNER, "size", "Font size", 50, (1, 3000, 1)),
     (PF_COLOR, "color", "Text color", (1.0, 0.0, 0.0))

  ],
  [],
  easier_gimp, menu="<Image>/File/Create")


main()

最近在this github project

中创建了基于Python的Hello World GIMP插件示例