Windows上的GIMP - 从命令行执行python-fu脚本

时间:2017-02-01 01:11:27

标签: python batch-file command-line gimp python-fu

在Windows环境中,我想调用GIMP来执行python-fu脚本(通过BAT文件),但我正在使用的命令行调用不会产生预期的结果。

例如,考虑以下名为makeafile_and_quit.py的python-fu脚本,它在我的GIMP的plug-ins文件夹中显示。其目的是加载现有图像并以不同的名称保存:

#!/usr/bin/env python

# Sample call from GIMP's python-fu console:
# pdb.python_fu_makeafile_and_quit_script()

from gimpfu import *

def makeafile_and_quit( ) :

    FILEPATH   = 'C:\\path\\to\\file.JPG'
    IMAGE      = pdb.gimp_file_load( FILEPATH,  FILEPATH )

    pdb.gimp_file_save( IMAGE, pdb.gimp_image_get_active_drawable( IMAGE ), FILEPATH + '_2.jpg',  FILEPATH + '_2.jpg' )

    pdb.gimp_quit(0)

    return


# PLUGIN REGISTRATION
# This is the plugin registration function
register(
    'makeafile_and_quit_script',
    'v0.0',
    'A new concept',
    'Author',
    'Author',
    'Just now',
    '<Toolbox>/MyScripts/This will make a file and _QUIT',
    '',
    [],
    [],
    makeafile_and_quit
    )

main()

如果从一个&#39; GUI实例调用脚本,该脚本可以完美无缺地执行。 GIMP,通过菜单调用脚本。它会生成一个以&#39; _2.jpg&#39;结尾的新文件。与源文件位于同一文件夹中。

使用以下命令从命令提示符调用时,行为会有所不同:

"C:\Program Files\GIMP 2\bin\gimp-2.8.exe" --batch '("makeafile_and_quit.py")' -b "(gimp-quit 0)"

创建GIMP实例,然后关闭,但即使看到消息batch command executed successfully,也不会创建文件。

如何从命令行重复与&#39; GUI实例完全相同的行为?

2 个答案:

答案 0 :(得分:0)

来自我的Windows档案:

gimp -idf -b "yourscript" -b "pdb.gimp_quit(1)"

答案 1 :(得分:0)

经过多次摆弄后,我得到了以下命令,该命令按预期工作:

  

“C:\ Program Files \ GIMP 2 \ bin \ gimp-console-2.8.exe”--verbose --batch   “(python-fu-makeafile-and-quit-script RUN-NONINTERACTIVE)” - 补丁   “(gimp-quit 0)”

注意:

  • 使用gimp-console-2.8.exe代替gimp-2.8.exe以避免在执行结束时进行不必要的击键
  • 使用python-fu-
  • 为函数名称添加前缀
  • 在名称中使用-代替_
  • 添加通用(和必要)RUN-NONINTERACTIVE参数
  • 在您的脚本中
  • ,不要使用调用显示的函数,例如DISPLAY = gimp.Display( IMAGE ),这会使脚本失败并显示gimp-console-2.8.exe