Вопрос

Что я хочу сделать, это открыть GIMP из программы Python (с подпроцессором.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()   
.

Это было полезно?

Решение

Хорошо, я наконец-то получил его работать. Я использовал GIMP Python Scripting для создания плагина GIMP, который может сделать тонну вещи, включая слои, которые вы упомянули. Тогда вы можете просто запустить GIMP из командной строки, передаваю аргументы в сценарий GIMP Python. Статья Использование Python-Fu в пакете GIMP Режим был отличным ресурсом для изучения того, как вызвать плагины 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 CMD:

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
.

Я проверил оба, чтобы убедиться, что они работают. Вы должны увидеть, как можно перевернуть изображение после каждого прогона сценария.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top