如何在 scheme 中为 gimp 调试 script-fu 脚本?

How to debug script-fu scripts for gimp in scheme?

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

初学者自然有很多错误和误解。

现在我正在寻找调试这些脚本的方法。

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

生成充满文本的新图像可能会奏效 ;-) 但看起来有点矫枉过正。

在 gimp 中调试脚本的方法有哪些?

gimp-message 的输出转到 "Error console"(如果您有此可停靠对话框设置),否则在警告对话框中。

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

你可以让你的生活更轻松,并在 Python 中编写你的脚本(更容易学习,更强大......)。有关 Windows 的一些调试技巧,请参见 here for the doc, here for some examples, and here

可能有更好的方法,但是,我的方法是:

  1. 打开 script fu 控制台(过滤器 -> Script fu -> 控制台)
  2. 编辑文件(例如:/Users/jamesanderson/code/scheme/gimp/learn1.scm
  3. 类型:(加载“/Users/jamesanderson/code/scheme/gimp/learn1.scm”)到控制台
  4. 回车
  5. 编辑文件进行更改
  6. 键盘向上箭头(无需键入即可再次调用加载函数)
  7. 回车

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

(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

如此高的水平:当你在处理脚本时,创建工作变量来保存你想要处理的东西,比如图像、pxiels、宽度等,然后一点一点地让函数工作。最后,一旦你有了短片段,你就可以将它折叠成一个干净的函数。

如果您从带有 -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 了解更多命令行选项。