为什么我的 GIMP Python 插件不能在我的 Ubuntu Linux 盒子上运行?

Why Does My GIMP Python Plug-In Not Work on My Ubuntu Linux Box?

我正在尝试为 GNU 图像处理插件编写自己的 Python 插件。我在 URL: http://gimpbook.com/scripting/slides/index.html 上学习了本教程。我更改了一些变量名称并将脚本命名为不同的名称,但基本上它是相同的脚本。

从交互式 GIMP Python shell 调用该脚本时该脚本有效。我使用鼠标进行访问:“Filters -> Python-Fu -> Console”。这里 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()

如果脚本没有显示在菜单上,这意味着上面对 "register" 和 "main" 的调用不是 运行。一种可能是您没有将 Python 文件标记为可执行权限。 (查看文件属性,或者运行chmod 777 myfile.py就可以了)

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

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

到目前为止,当您已修复内容时​​,它应该会显示在菜单中。

我找到了解决办法!网上看了几个教程,换了个开发环境,Eclipse使用PyDev插件。 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 个代码问题对我来说很突出 function/call 不匹配和缺少定界逗号

(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 插件示例