批处理模块中的Gimp Python

2024-10-02 12:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

以下是我使用的代码:


#!/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()

请帮忙。在


Tags: the代码image错误functionpdbforegroundset
1条回答
网友
1楼 · 发布于 2024-10-02 12:38:33

完整答案在这里solving gimp unbound variable error

所以我在试图弄清楚如何在GIMP中运行函数时遇到了这个问题。在

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

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

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

前3个0表示3个默认参数:

  • INTERACTIVE MODE OR NOT
  • img IMAGE
  • draw DRAWABLE

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

如果有人对发生的事情有更好的了解,一定要开导。在

编辑:

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

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

如果它不在那里,请查看这篇文章,在哪里放置你的插件文件来注册它:wikibooks。在

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

但同样,您应该先尝试以格式运行命令,错误与给定的scheme命令有关。。。在

相关问题 更多 >

    热门问题