如何在 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。
可能有更好的方法,但是,我的方法是:
- 打开 script fu 控制台(过滤器 -> Script fu -> 控制台)
- 编辑文件(例如:/Users/jamesanderson/code/scheme/gimp/learn1.scm
- 类型:(加载“/Users/jamesanderson/code/scheme/gimp/learn1.scm”)到控制台
- 回车
- 编辑文件进行更改
- 键盘向上箭头(无需键入即可再次调用加载函数)
- 回车
请注意,这是我根据评论回答的扩展。当超越上述简单的概念验证脚本时,重要的是要知道该控制台在调用之间保留状态。例如,如果我们 运行 这个方案脚本:
(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
了解更多命令行选项。
我尝试使用 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。
可能有更好的方法,但是,我的方法是:
- 打开 script fu 控制台(过滤器 -> Script fu -> 控制台)
- 编辑文件(例如:/Users/jamesanderson/code/scheme/gimp/learn1.scm
- 类型:(加载“/Users/jamesanderson/code/scheme/gimp/learn1.scm”)到控制台
- 回车
- 编辑文件进行更改
- 键盘向上箭头(无需键入即可再次调用加载函数)
- 回车
请注意,这是我根据评论回答的扩展。当超越上述简单的概念验证脚本时,重要的是要知道该控制台在调用之间保留状态。例如,如果我们 运行 这个方案脚本:
(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
了解更多命令行选项。