首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写GIMP python脚本

编写GIMP python脚本
EN

Stack Overflow用户
提问于 2012-09-30 15:59:10
回答 1查看 13.5K关注 0票数 14

我想要做的是从python程序(可能用subprocess.Popen )打开gimp,同时,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:

代码语言:javascript
复制
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()   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-30 18:22:30

好吧,我终于让它起作用了。我使用GIMP Python脚本创建了一个gimp插件,它可以完成一吨的工作,包括您提到的层。然后,您可以从命令行运行gimp,将参数传递给python脚本。文章在Gimp批处理模式下使用Python是学习如何从命令行调用gimp插件的优秀资源。下面的示例将将指定的图像加载到gimp中,水平翻转它,保存并退出gimp。

flip.py是gimp插件,应该放在插件目录中,在我的例子中,这个目录是~/.gimp-2.6/插件/flip.py。

flip.py

代码语言:javascript
复制
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()

从终点站可以运行如下:

代码语言:javascript
复制
gimp -i -b '(python-flip RUN-NONINTERACTIVE "/tmp/test.jpg")' -b '(gimp-quit 0)'

或来自Windows cmd:

代码语言:javascript
复制
gimp-console.exe -i -b "(python-flip RUN-NONINTERACTIVE """<test.jpg>""")" -b "(gimp-quit 0)"

也可以使用以下方法从python脚本中运行相同的代码:

代码语言:javascript
复制
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

我对两者都进行了测试以确保它们能起作用。您应该在每次运行脚本后看到图像被翻转。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12662676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档