14

私がやりたいのは、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()\'"])しかし、コンソールに「バッチコマンドが正常に実行されました」と表示されても、何も起こりません...

アップデート2:

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()   
4

1 に答える 1

13

わかりました、ようやく機能しました。私はGIMP Pythonスクリプトを使用して、あなたが言及したレイヤーを含む多くのことを実行できるgimpプラグインを作成しました。次に、引数を python gimp スクリプトに渡すコマンド ラインから gimp を実行します。記事Using Python-Fu in Gimp Batch Modeは、コマンド ラインから 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()

ターミナルからこれを実行できます:

gimp -i -b '(python-flip RUN-NONINTERACTIVE "/tmp/test.jpg")' -b '(gimp-quit 0)'

または Windows コマンドから:

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

または、次を使用して 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

両方が機能することを確認するためにテストしました。スクリプトを実行するたびに画像が反転するはずです。

于 2012-09-30T18:22:30.720 に答える