编写GIMP python脚本

Ant*_*040 11 python subprocess gimp python-fu gimpfu

我想要做的是从python程序打开gimp(也许使用subprocess.Popen),同时,gimp将以一个python脚本开始,该脚本将打开一个图像并添加一个图层......好吧,如何我可以实现这一点(我希望GIMP有更好的文档......)?

更新:

我这样做了:subprocess.Popen(["gimp", "--batch-interpreter" , "python-fu-eval" , "-b" ,"\'import sys; sys.path.append(\"/home/antoni4040\"); import gimpp; from gimpfu import *; gimpp.main()\'"])但是,即使控制台说"批处理命令成功执行",也没有任何反应......

UPDATE2:

from gimpfu import *

def gimpp():
    g = gimp.pdb
    images = gimp.image_list() 
    my_image = images[0]
    layers = my_image.layers
    new_image = g.gimp_file_load_layer("/home/antoni4040/???????/Layout.png")
    my_image.add_layer(new_image)
    new_layer = g.gimp_layers_new(my_image,  1024, 1024, RGBA_IMAGE, "PaintHere", 0, NORMAL_MODE)
    my_image.add_layer(new_layer)

register('GimpSync', "Sync Gimp with Blender", "", "", "", "", "<Image>/SyncWithBlender", '*', [], [], gimpp)

main()   
Run Code Online (Sandbox Code Playgroud)

Mar*_*agh 10

好的,我终于搞定了.我使用GIMP Python脚本来创建一个gimp插件,它可以完成一些包括你提到的层的东西.然后你可以从命令行运行gimp,将参数传递给python gimp脚本.在Gimp Batch Mode中使用Python-Fu这篇文章是学习如何从命令行调用gimp插件的绝佳资源.下面的示例将指定的图像加载到gimp中,水平翻转,保存并退出gimp.

flip.py是gimp插件,应该放在你的插件目录中,在我的情况下是〜/ .gimp-2.6/plug-ins/flip.py.

flip.py

from gimpfu import pdb, main, register, PF_STRING
from gimpenums import ORIENTATION_HORIZONTAL

def flip(file):
    image = pdb.gimp_file_load(file, file)
    drawable = pdb.gimp_image_get_active_layer(image)
    pdb.gimp_image_flip(image, ORIENTATION_HORIZONTAL)
    pdb.gimp_file_save(image, drawable, file, file)
    pdb.gimp_image_delete(image)

args = [(PF_STRING, 'file', 'GlobPattern', '*.*')]
register('python-flip', '', '', '', '', '', '', '', args, [], flip)

main()
Run Code Online (Sandbox Code Playgroud)

从终端可以运行这个:

gimp -i -b '(python-flip RUN-NONINTERACTIVE "/tmp/test.jpg")' -b '(gimp-quit 0)'
Run Code Online (Sandbox Code Playgroud)

或者从Windows cmd:

gimp-console.exe -i -b "(python-flip RUN-NONINTERACTIVE """<test.jpg>""")" -b "(gimp-quit 0)"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用以下命令从python脚本运行相同的内容:

from subprocess import check_output
cmd = '(python-flip RUN-NONINTERACTIVE "/tmp/test.jpg")'
output = check_output(['/usr/bin/gimp', '-i', '-b', cmd, '-b', '(gimp-quit 0)'])
print output
Run Code Online (Sandbox Code Playgroud)

我测试了两者以确保它们正常工作.您应该会在每个脚本运行后看到图像被翻转.

  • 遗憾的是,使用 Python-fu 链接已死:这是一个 archive.org 链接:https://web.archive.org/web/20150328204953/http://www.exp-media.com/content/extending-gimp-python- python-fu-plugins-part-4 (4认同)