Pregunta

Lo que quiero hacer es abrir GIMP de un programa de Python (con subprocesos.Popen, quizás), y, al mismo tiempo, GIMP comenzará con un script de Python que abrirá una imagen y agregará una capa ...Bueno, ¿cómo puedo lograr eso (deseo que Gimp tenga una mejor documentación ...)?

Actualización:

Hice esto: subprocess.Popen(["gimp", "--batch-interpreter" , "python-fu-eval" , "-b" ,"\'import sys; sys.path.append(\"/home/antoni4040\"); import gimpp; from gimpfu import *; gimpp.main()\'"]), pero, incluso si la consola dice "comando por lotes ejecutado con éxito", no pasa nada ...

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

¿Fue útil?

Solución

OK, finalmente lo tengo trabajando. Utilicé el GIMP Python Scripting para crear un complemento GIMP que puede hacer una tonelada de Cosas que incluyen las capas que mencionaste. Luego, solo puede ejecutar GIMP de la línea de comandos que pasa los argumentos al script de Python Gimp. El artículo con Python-Fu en el lote de GIMP El modo fue un excelente recurso para aprender a llamar a los complementos GIMP de la línea de comandos. El siguiente ejemplo cargará la imagen especificada en GIMP, voltearlo horizontalmente, guardar y salir GIMP.

flip.py es el complemento GIMP y debe colocarse en su directorio de complementos que fue ~ / .gimp-2.6 / complementos / flip.py en mi caso.

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

del terminal uno podría ejecutar esto:

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

o de Windows CMD:

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

o puede ejecutar lo mismo desde un script de Python usando:

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

He probado tanto para asegurarme de que funcionen. Debería ver que la imagen se volteja después de que se ejecute cada script.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top