【问题标题】:How to debug script-fu scripts for gimp in scheme?如何在方案中为 gimp 调试 script-fu 脚本?
【发布时间】:2019-04-01 13:09:10
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: debugging scheme gimp script-fu


    【解决方案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 了解更多命令行选项。

    【讨论】:

    • 也适用于 Windows。对我来说,命令是 C:\Program Files\GIMP 2\bin\gimp-2.10.exe -c 将打开另一个命令窗口
    【解决方案2】:

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

    1. 打开脚本fu控制台(Filters -> Script Fu -> Console)
    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
    

    如此高级:当您在编写脚本时,创建工作变量来保存您想要处理的内容,例如图像、像素、宽度等,然后逐步使函数正常工作。最后,一旦你有了简短的 sn-p 片段,你就可以将它折叠成一个干净的函数。

    【讨论】:

    • 它有效,但我必须“手动”获取图像参数,使用 (myx (vector-ref (cadr (gimp-image-list) 0)) 我的函数名为 myx.我可以在控制台中看到 (print ...) 的结果。
    • 啊,是的,在 Python 中:image=gimp.image_list()[0] :)
    【解决方案3】:

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

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

    您可以让您的生活更轻松,并用 Python 编写脚本(更容易学习,更强大......)。请参阅here 获取文档,here 获取一些示例,here 获取一些 Windows 调试技巧。

    【讨论】:

    • with (print) 输出不会转到启动 gimp 的控制台,而是转到一个弹出窗口,这对于小文本来说稍微方便一些。
    • 可能依赖于操作系统。您使用的是 Windows、OSX 还是某些 Linux/Unix?
    • 我在 Linux 上,使用 gimp 2.6.6。
    • 还在 2.6.6 上吗?还是你的意思是 2.10.6?
    • 真的是 2.6.6,10 年前的 ubuntu。但是最新的 ubuntu 有 2.8.16 版本,但它运行的机器更老,CPU 功率和内存更少。我想我也得升级我的硬件了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2012-07-15
    相关资源
    最近更新 更多