Escribiendo un script en python GIMP

Lo que quiero hacer es abrir gimp desde un progtwig de python (con subproceso.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 (desearía que GIMP tuviera mejor documentación …)?

Actualizar:

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 sucede nada …

Actualización2:

 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", "", "", "", "", "/SyncWithBlender", '*', [], [], gimpp) main() 

Ok, finalmente lo tengo funcionando. Utilicé los scripts GIMP de Python para crear un complemento de gimp que puede hacer una tonelada de cosas, incluidas las capas que mencionaste. Luego, simplemente puede ejecutar gimp desde la línea de comandos pasando los argumentos al script gimp de python. El artículo Uso de Python-Fu en el modo por lotes de Gimp fue un excelente recurso para aprender cómo llamar a los complementos de Gimp desde la línea de comandos. El siguiente ejemplo cargará la imagen especificada en gimp, la volteará horizontalmente, guardar y salir de gimp.

flip.py es el complemento de gimp y se debe colocar en el directorio de complementos que era ~ / .gimp-2.6 / plug-ins / 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() 

desde la terminal se podría ejecutar esto:

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

o desde Windows cmd:

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

o puedes 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 ambos para asegurarse de que funcionan. Debería ver cómo se invierte la imagen después de ejecutar cada script.