Yot*_*tam 1 python gimp python-fu gimpfu
我正在尝试使用 pythonfu 编写一个 gimp 脚本。但是,当我尝试在本地运行脚本时,出现错误
`--> ./vvv.py
Traceback (most recent call last):
File "./vvv.py", line 5, in <module>
from gimpfu import *
ImportError: No module named gimpfu
Run Code Online (Sandbox Code Playgroud)
我认为该脚本可能只能通过 gimp 加载。但是,脚本不会出现在 gimp 菜单中。在这种情况下,我如何获得错误输出?
根据您的操作系统,您必须查找 GIMP 插件的目录,例如:
GIMP 2\lib\gimp\2.0\plug-ins
Run Code Online (Sandbox Code Playgroud)
并在那里复制您的脚本。当然,您必须添加如下注册内容:
register(
"python-fu-draw", #<- this is plugin name
N_("brief"), #<- description
"Long", #<- description
"name surname", #<- author
"@Copyright 2013", #<- copyright info
"2013/10/29", #<- creation date
N_("_Draw..."), #<- label shown in gimp's menu
"", #<- kind of image requested from your script (INDEX,RGB,...and so on)
[ #<- input parameters array
(PF_FILE, "ifile", N_("Color input file"), 'default.txt'),
],
[], #<- output parameters array (usually empty)
draw, #<- main method to call
menu="<Image>/Filters/", #<- Where add your plugin
domain=("gimp20-python", gimp.locale_directory)
)
main() #<- don't forget this
Run Code Online (Sandbox Code Playgroud)
一旦您将脚本复制到正确的目录中并使用正确的注册内容,您就可以运行 GIMP 并运行您的脚本,在您在注册内容中选择的下拉菜单中选择它。您不必从 python 控制台运行它。所以那些行不通:
python myscript.py
./myscript.py
>>> myscript
Run Code Online (Sandbox Code Playgroud)
要以交互方式调试脚本,请从 gimp 打开 python-fu 控制台:
Filters->Python-fu->Console
Run Code Online (Sandbox Code Playgroud)
看看这个网站。主要是幻灯片非常有用。
如果您想以批处理模式运行脚本,请查看此
这是预期的行为。GIMP 的 Python 插件有一个不寻常的设计:不要直接调用 Python 脚本,而是调用 GIMP,后者依次调用您的脚本(GUI 和命令行脚本都是如此)。
确保在脚本末尾注册您的中心函数:
from gimpfu import *
# ... your script ...
args = [(PF_STRING, 'file', 'GlobPattern', '*.*')] # adjust to your function
register('my-script', '', '', '', '', '', '', '', args, [], my_function)
main() # GIMP's main(), do not write your own!
Run Code Online (Sandbox Code Playgroud)将您的脚本标记为可执行
chmod +x my_script.py
Run Code Online (Sandbox Code Playgroud)复制、移动或硬链接您的脚本,使其位于 GIMP 的插件目录中:
ln my_script.py ~/.gimp-2.8/plug-ins/my_script.py
Run Code Online (Sandbox Code Playgroud)您现在可以调用 GIMP,它将调用您的脚本(警告:GIMP 有点慢)
gimp -i -b '(my-script RUN-NONINTERACTIVE "example.png")' -b '(gimp-quit 0)'
Run Code Online (Sandbox Code Playgroud)
如上所述,请勿这样做:
python my_script.py # bad!
Run Code Online (Sandbox Code Playgroud)括号是因为它是一个Scheme函数调用。出于同样的原因,您必须将可用函数列表中的所有连字符替换为下划线(可以在 GIMP GUI 中的 下找到Help > Procedure Browser
)。