Question

Ce que je veux faire, c'est ouvrir Gimp à partir d'un programme Python (avec subprocess.Popen, peut-être), et en même temps, Gimp démarrera avec un script Python qui ouvrira une image et ajoutera un calque...Eh bien, comment puis-je y parvenir (j'aimerais que GIMP ait une meilleure documentation...) ?

Mise à jour:

J'ai fait ça: subprocess.Popen(["gimp", "--batch-interpreter" , "python-fu-eval" , "-b" ,"\'import sys; sys.path.append(\"/home/antoni4040\"); import gimpp; from gimpfu import *; gimpp.main()\'"]) , mais, même si la console indique "commande batch exécutée avec succès", rien ne se passe...

Mise à jour2 :

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()   
Était-ce utile?

La solution

Ok, j'ai finalement réussi à le faire fonctionner.J'ai utilisé le Scripts Python GIMP pour créer un plugin Gimp capable de faire une tonne de choses, y compris les couches que vous avez mentionnées.Ensuite, vous pouvez simplement exécuter gimp à partir de la ligne de commande en passant des arguments au script python gimp.L'article Utiliser Python-Fu en mode batch Gimp était une excellente ressource pour apprendre à appeler des plugins Gimp depuis la ligne de commande.L'exemple ci-dessous chargera l'image spécifiée dans Gimp, la retournera horizontalement, enregistrera et quittera Gimp.

flip.py est le plug-in Gimp et doit être placé dans votre répertoire de plug-ins qui était ~/.gimp-2.6/plug-ins/flip.py dans mon cas.

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

depuis le terminal, on pourrait exécuter ceci :

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

ou depuis Windows cmd :

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

ou vous pouvez exécuter la même chose à partir d'un script python en utilisant :

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

J'ai testé les deux pour m'assurer qu'ils fonctionnent.Vous devriez voir l'image se retourner après chaque exécution du script.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top