11

GIMP 使您能够在 Python 中制作插件,我想做的是调用 GIMP 函数,就像我在这个插件之一中所做的那样,但这会返回以下错误,因为 GIMP 没有找到任何正在运行的 GIMP Core 来使用。

LibGimpBase-ERROR **: gimp_wire_write_msg: the wire protocol has not been initialized aborting...

我想知道这是否可能?如果是,如何?

谢谢

4

3 回答 3

15

GIMP 的 Python 扩展需要从 GIMP 实例内部运行。如果您想从 Python 使用 GIMPś API,您必须运行没有图形 UI(-i从命令行传递参数)的 GIMP,并运行对 api 的自定义调用 - 使用-b命令行参数 - 因此,您可以运行 python_fu_do_it程序,从命令行调用:

gimp -i -b \(python-fu-do-it \)

请注意,这是让 gimp-python 扩展运行的唯一方法:您必须从 GIMP 进程内部运行它。

在现实生活中,一件有用的事情可能是让您的 gimp 插件公开一些对您想要的图像执行操作的函数,并通过 xmlrpc 或 jsonrpc 服务器导出这些函数——这在 Python 中很容易完成。然后,您使用上述方法启动此“图像服务器”,并创建独立的 python 脚本,该脚本通过 xmlrpc 调用您的 gimp 使用函数。

于 2011-11-20T14:36:17.863 回答
0

一种选择是在 gimp 中作为脚本创建一个侦听器进程(这可能对锁定 UI 有影响,此处需要进行实验),然后让它侦听 beanstalkd 工作队列。然后在您的外部流程中,在 beanstalk 队列上提出工作请求,然后 beanstalk 可以在进程外处理这些订单。

综上所述,99% 的用例我可以想象你想要这样做,也许 ImageMagick 会比 gimp 更合适,因为它是为我想象你感兴趣的任务而设计的。

于 2013-06-20T07:52:05.733 回答
-3

我不得不说以下陈述是不正确的:

“GIMP 的 Python 扩展需要从 GIMP 实例内部运行。”

您不必运行 gimp 即可使用通过 python gimpfu API 公开的函数。

在任何 python 程序中,对于 linux,您只需执行以下操作:

import sys  
sys.path.append('/usr/lib/gimp/2.0/python/')  
import gimpfu  

其中 '/usr/lib/gimp/2.0/python/' 是 gimp 安装的路径。

问候,卡罗。

于 2012-06-23T14:30:18.700 回答