GIMP 使您能够在 Python 中制作插件,我想做的是调用 GIMP 函数,就像我在这个插件之一中所做的那样,但这会返回以下错误,因为 GIMP 没有找到任何正在运行的 GIMP Core 来使用。
LibGimpBase-ERROR **: gimp_wire_write_msg: the wire protocol has not been initialized aborting...
我想知道这是否可能?如果是,如何?
谢谢
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 使用函数。
一种选择是在 gimp 中作为脚本创建一个侦听器进程(这可能对锁定 UI 有影响,此处需要进行实验),然后让它侦听 beanstalkd 工作队列。然后在您的外部流程中,在 beanstalk 队列上提出工作请求,然后 beanstalk 可以在进程外处理这些订单。
综上所述,99% 的用例我可以想象你想要这样做,也许 ImageMagick 会比 gimp 更合适,因为它是为我想象你感兴趣的任务而设计的。
我不得不说以下陈述是不正确的:
“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 安装的路径。
问候,卡罗。