如何在Python脚本中使用GIMP?

如何在Python脚本中使用GIMP?,python,gimp,Python,Gimp,GIMP使您能够在Python中创建插件,我想做的是调用GIMP函数,就像我在这个插件中所做的一样,但这会返回以下错误,因为GIMP找不到任何正在运行的GIMP内核可供使用 LibGimpBase-ERROR **: gimp_wire_write_msg: the wire protocol has not been initialized aborting... 我想知道这是否可能?如果是,怎么做 谢谢GIMP的Python扩展需要从GIMP实例内部运行。如果要使用Python中的GIMP

GIMP使您能够在Python中创建插件,我想做的是调用GIMP函数,就像我在这个插件中所做的一样,但这会返回以下错误,因为GIMP找不到任何正在运行的GIMP内核可供使用

LibGimpBase-ERROR **: gimp_wire_write_msg: the wire protocol has not been initialized aborting...
我想知道这是否可能?如果是,怎么做


谢谢

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

gimp -i -b \(python-fu-do-it \)
注意,这是运行gimp python扩展的唯一方法:您必须从gimp进程内部运行它


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


注意,Karlo。

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


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

在脚本开始工作之前,使用
子流程
模块启动gimp实例?我想可能是,这不是一个重复,因为我明确地问如何在不使用插件的情况下执行它。我必须尝试子流程调用,但我认为这会失败。它也考虑过这种方法。您能否确认这是100%确定的,在Python中没有办法使用GIMP而不是在GIMP中使用Python?作为该代码的贡献者之一,我向您确认。@jsbueno是否有任何可以预见的方法使这一点在某一天成为可能?请注意这个答案:havign GIMP在后台运行并没有那么糟糕。你可以有一个Python插件来实例化一个xml rpc服务器并与之交换数据——有几种方法可以做到这一点——你只需要保持一个GIMP进程运行——这不是世界末日。我发现你需要添加一个-b(GIMP退出1)或者它在完成后就放在那里。如果不想在GIMP中注册脚本,只需使用以下命令行直接运行python即可:>>>GIMP-i--batch解释器=python fu eval-b'execfile(“myfilename.py”);pdb.gimp_quit(1)”您是否尝试过一些“基本工作流”:图像加载+操作+保存@jsbueno告诉了我其他的事情,并且是一个贡献者。在我尝试调用pdb函数的基本工作流之后,我遇到了相同的错误。将gimp添加到python路径不是在没有gimp的情况下运行pdb函数的解决方案。我的错误。您可以导入模块,但如果没有运行GIMP,它就无法工作-相反,Python会以“LibGimpBase ERROR**:GIMP\u wire\u write\u msg:wire协议尚未初始化”结束。GIMP可以通过命令行启动,而无需UI。它工作得很好,你可以把你的脚本放进去听作业。