如何为方案中的gimp调试script-fu脚本?

时间:2018-10-28 12:05:40

标签: debugging scheme gimp script-fu

我尝试使用script-fu,scheme为gimp制作一些脚本。

自然,作为一个初学者,有很多错误和误解。

现在我正在寻找一种调试那些脚本的方法。

我发现了(gimp-message),但是结果没有出现。我不知道是否可以将调试消息打印到我可以检查它们的任何地方。

生成充满文本的新图像可能会起作用;-),但看起来有点过大。

有什么方法可以调试gimp中的脚本?

3 个答案:

答案 0 :(得分:1)

gimp消息的输出将进入“错误控制台”(如果您具有此可停靠对话框设置),否则将进入警告对话框。

如果您使用的是Linux或OSX,还可以从终端启动Gimp并使用(print ...)调用,它们将显示在终端中。

您可以使生活更轻松,并使用Python编写脚本(易于学习,功能更强大...)。有关文档,请参见here,有关示例,请参见here;有关Windows的一些调试技巧,请参见here

答案 1 :(得分:1)

也许有更好的方法,但是我要做的是:

  1. 打开脚本fu控制台(过滤器->脚本fu->控制台)
  2. 编辑文件(例如:/Users/jamesanderson/code/scheme/gimp/learn1.scm
  3. 类型:(将“ /Users/jamesanderson/code/scheme/gimp/learn1.scm”加载到控制台中)
  4. 按Enter
  5. 修改文件
  6. 向上箭头键(无需输入即可再次获取load函数调用)
  7. 按Enter

enter image description here

enter image description here

请注意,这是我根据评论对答案的扩展。当超越上述简单的概念证明脚本时,重要的是要知道该控制台保留两次调用之间的状态。例如,如果我们运行以下方案脚本:

(define jea-test-img-id nil)

(define (jea-find-test-img)
  (car (gimp-image-list)))

,然后转到控制台并键入:

jea-test-img-id

我们得到的结果是:

> jea-test-img-id
()

这很好,脚本根据需要启动了变量,我们看到了结果。因此,在脚本中设置var时,控制台会保留脚本的状态更改。现在让我们在控制台中更改状态:

(set! jea-test-img-id (jea-find-test-img))

我们调用了一个便捷函数,该函数获取活动图像列表中的第一个图像ID,并将其存储在我们先前声明的变量中(然后为nil)。现在让我们再次检查问题:

jea-test-img-id

然后结果:

> jea-test-img-id
1

如此高的水平:使用脚本时,创建工作变量来保存要处理的内容,例如图像,像素,宽度等,然后逐步使函数起作用。最后,如果您的代码段很短,则可以将其折叠为一种干净的功能。

答案 2 :(得分:1)

如果使用 -c 标志从命令行运行 gimp,则会在终端中打印消息:

$ gimp -c myfile.xcf
# run my plugin from the GUI menu
My Plugin-Warning: this is a message

已使用 GIMP v2.10.18 进行测试,请参阅 gimp --help 了解更多命令行选项。