2011-11-19 25 views
9

GIMP le permite hacer complementos en Python, lo que me gustaría hacer es llamar a la función GIMP como lo haría dentro de uno de estos complementos, pero esto devuelve el siguiente error ya que GIMP no encuentra ningún GIMP Core en ejecución. .¿Cómo usar GIMP dentro de un script de Python?

LibGimpBase-ERROR **: gimp_wire_write_msg: the wire protocol has not been initialized aborting... 

Me gustaría saber si es posible? Y si es así, ¿cómo?

Gracias

+0

iniciar una instancia del GIMP utilizando el módulo 'subprocess' antes de su guión comienza a hacer su trabajo? –

+0

posible duplicado de [Conectar GIMP con PHP o Python] (http: // stackoverflow.com/questions/3237252/connect-gimp-with-php-or-python) – unutbu

+1

Creo que no es un duplicado ya que explícitamente pregunto cómo realizarlo sin el uso del plugin. Tengo que probar la llamada al subproceso, pero creo que eso no funcionará. – AsTeR

Respuesta

11

extensiones de Python de GIMP necesitan ser ejecutados desde el interior de una instancia de GIMP. Si desea utilizar GIMPś API desde Python, debe ejecutar un GIMP sin una interfaz gráfica de usuario (pasando el parámetro -i desde la línea de comandos) y ejecutar una llamada personalizada a la API - con el parámetro de línea de comando -b - entonces, puede ejecutar python_fu_do_it su programa, desde la línea de comandos de llamada:

gimp -i -b \(python-fu-do-it \) 

tenga en cuenta que esta es la única manera de conseguir extensiones de GIMP en python que se ejecutan: tienes que ejecutarlo desde dentro de un proceso de GIMP.

En la vida real, una cosa útil que hacer es hacer que su plugin exhiba algunas funciones que realizan acciones en las imágenes que desee y exportarlas a través de un servidor xmlrpc o jsonrpc, lo que se hace fácilmente en Python. A continuación, inicia este "servidor de imágenes" utilizando el método anterior y crea una secuencia de comandos python independiente que llama a las funciones que utilizan gimp a través de xmlrpc.

+1

Pensó en ese enfoque también. ¿Puedes confirmar que esto es 100% seguro de que no hay forma de usar GIMP dentro de Python en lugar de usar Python dentro de GIMP? – AsTeR

+1

Como uno de los contribuidores a ese código, te lo confirmo. – jsbueno

+0

@jsbueno ¿hay alguna manera previsible de que esto sea posible algún día? – magnetar

-3

tengo que decir que la instrucción que sigue no es cierto:

"extensiones de Python de GIMP necesita que se ejecute desde el interior de una instancia de GIMP."

No tiene que ejecutar gimp para usar sus funciones que están expuestas a través de la API python gimpfu.

En cualquier programa de pitón, para Linux que simplemente siguiente:

import sys 
sys.path.append('/usr/lib/gimp/2.0/python/') 
import gimpfu 

donde '/usr/lib/gimp/2.0/python/' es el camino a gimp instalación.

Saludos, Karlo.

+0

¿Intentó un poco de "flujo de trabajo básico": carga de imágenes + manipulación + guardar? @jsbueno dice algo más y es un colaborador – AsTeR

+3

Después de probar el flujo de trabajo básico con las funciones de pdb llamando recibí el mismo error. Agregar gimp a python path no es la solución para ejecutar funciones de pdb sin gimp. Mi error. –

+2

Puede importar los módulos, pero sin un GIMP en ejecución, no funciona; en su lugar, Python termina con "LibGimpBase-ERROR **: gimp_wire_write_msg: el protocolo de conexión no se ha inicializado " – jsbueno

0

Una opción sería crear un proceso de escucha dentro de gimp como script (Esto podría tener implicaciones con respecto al bloqueo de la UI, aquí se necesitará experimentación), y luego escuchar una cola de trabajo beanstalkd. luego, en sus procesos externos, las solicitudes de trabajo alojadas en la cola de beans y beanstalk pueden procesar estas órdenes fuera del proceso.

Con todo lo dicho, el 99% de los casos de uso podría imaginar que desea hacer esto, quizás ImageMagick sería una opción más apropiada que gimp ya que está diseñada para el tipo de tareas que imagino que le interesan

+0

GIMP se puede iniciar por línea de comandos sin UI. Funciona bien y puedes poner tu script en él para escuchar trabajos. – AsTeR

Cuestiones relacionadas