2

我正在尝试以批处理模式执行一段 Python 代码来编辑现有的 Gimp 文件。收到以下错误

批处理命令遇到执行错误:错误:(:1)评估:未绑定变量:命令行执行

这是我正在使用的代码:


#!/usr/bin/env python

from gimpfu import *

# the script
def my_tf_cmd_function(fle, fontname, fontsize) :
    image = pdb.gimp_file_load(fle,fle)
    drawable = pdb.gimp_image_get_active_layer(image)
    image.undo_group_start()
    foreground = gimp.get_foreground()  
    gimp.set_foreground(240,240,240)
    textlayer1 = gimp.Layer(image, "Troo", drawable.width, drawable.height, RGBA_IMAGE, 100, NORMAL_MODE)
    image.add_layer(textlayer1, 0)
    pdb.gimp_drawable_fill(textlayer1, 3) # transparent fill
    gimp.set_background(255, 255, 255) 
    gimp.set_foreground(240,240,240)
    floattext = pdb.gimp_text_fontname(image, textlayer1, 200, 100, "T", 1, 1, fontsize, 1, fontname)

    pdb.gimp_floating_sel_anchor(floattext)
    gimp.set_foreground(foreground) 
    image.undo_group_end()
    pdb.gimp_file_save(image,  drawable,  "/home/Downloads/img.xcf",  "/home/Downloads/img.xcf")
    return


# This is the plugin registration function
register(
    "command_line_execution",    
    "My Command Line Attempt Python-Fu",
    "This script does nothing and is extremely good at it",
    "RC",      
    "RC", 
    "May 2013",
    "<Image>/MyScripts/My Command Python-Fu", 
    "*", 
    [
      (PF_STRING, "fle", "GlobPattern", "*.*"),
      (PF_FONT, "fontname", "Foo font", "Arial"),
      (PF_INT, "fontsize", "Foo font size", 18)
    ], 
    [],
    my_tf_cmd_function,
    )

main()

请帮忙。

4

1 回答 1

-2

完整答案在这里解决 gimp 未绑定变量错误

因此,当我试图弄清楚如何在 GIMP 中运行该函数时,我遇到了这个问题。

我在这里找到了答案:IBM developerWorks

所以基本上你这样调用函数:

gimp -i -b '(python-fu-command-line-execution 0 0 0 "*.*" "Arial" 18)' -b '(gimp-quit 0)'

前 3 个零用于 3 个默认参数:

  • INTERACTIVE MODE OR NOT
  • img IMAGE
  • draw DRAWABLE

我知道你的代码并没有真正使用这些,但这些都是必需的,所以......至于为什么它们必须是整数,我自己也不知道。我反复试验,发现这INTEGER对我有用。

如果有人对正在发生的事情有更好的了解,请开导。

编辑:

所以我自己最初有这个问题......我发现Error: ( : 1) eval: unbound variable: commmand-line-execution错误是通过CLI以Scheme语言插入批处理命令时引起的。

但是要检查您的函数是否已注册,请转到过程浏览器 ( Help > Procedure Browser) 并搜索您的函数,(它会类似于python-fu-command-line-execution)。

如果它不存在,请查看这篇关于在哪里放置插件文件以使其注册的文章:wikibooks

如果已注册,您可以尝试在控制台中运行它。( Filters > Python Fu > Console),如果它运行,则说明您的代码没有问题。

但都一样,您应该先尝试以格式运行命令,错误与给出的方案命令有关......

于 2017-01-17T12:19:40.560 回答