2011-11-19 21 views
9

GIMP umożliwia tworzenie wtyczek w Pythonie, a chciałbym wywołać funkcję GIMP tak, jakbym zrobił to w jednej z tych wtyczek, ale zwróci to następujący błąd, ponieważ GIMP nie znajduje żadnego działającego Core GIMP do użycia .Jak korzystać z GIMPa w skrypcie Pythona?

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

Chciałbym wiedzieć, czy to możliwe? A jeśli tak, to w jaki sposób?

Dzięki

+0

Zacznij wystąpienie GIMP przy użyciu 'moduł subprocess' przed skrypt zacznie wykonywać swoją pracę? –

+0

możliwy duplikat [Połącz GIMP z PHP lub Python] (http: // stackoverflow.com/questions/3237252/connect-gimp-with-php-or-python) – unutbu

+1

Myślę, że to nie jest duplikat, ponieważ zdecydowanie pytam, jak go wykonać bez użycia wtyczki. Muszę spróbować wywołania podprocesowego, ale myślę, że to się nie powiedzie. – AsTeR

Odpowiedz

11

rozszerzeń GIMP Pythona musi być uruchamiany od wewnątrz instancji GIMP. Jeśli chcesz używać API GIMPś z Pythona, musisz uruchomić GIMP bez graficznego interfejsu użytkownika (przekazując parametr -i z wiersza poleceń) i uruchamiając niestandardowe wywołanie api - za pomocą parametru wiersza poleceń -b - możesz więc uruchomić Twój program python_fu_do_it, z powołaniem linii komend:

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

pamiętać, że jest to jedyny sposób, aby uzyskać rozszerzenia GIMP-python uruchomione: trzeba uruchomić go od wewnątrz procesu GIMP.

W prawdziwym życiu użyteczną rzeczą może być, aby Twoja gimp-plugin eksponowała niektóre funkcje, które wykonują czynności na obrazach, które chcesz, i eksportować je za pomocą serwera xmlrpc lub jsonrpc - co łatwo zrobić w Pythonie. Następnie uruchamiasz ten "serwer obrazu" za pomocą powyższej metody i tworzysz samodzielny skrypt python, który wywołuje twoje funkcje gimp-using przez xmlrpc.

+1

Myślał także o tym podejściu. Czy możesz potwierdzić, że jest to 100% pewności, że nie można używać GIMP w Pythonie zamiast używać Pythona w GIMP? – AsTeR

+1

Jako jeden z autorów tego kodu, potwierdzam to Tobie. – jsbueno

+0

@jsbueno czy istnieje jakiś łatwy do przewidzenia sposób, aby było to możliwe pewnego dnia? – magnetar

-3

muszę powiedzieć, że po stwierdzenie nie jest prawdziwe „Rozszerzenia GIMP Python musi być uruchamiany od wewnątrz instancji GIMP”

Nie trzeba uruchamiać GIMPa, aby móc korzystać z jego funkcji, które są udostępniane przez interfejs API python gimpfu.

W dowolnym programie Python, Linux po prostu zrobić następujące:

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

gdzie '/usr/lib/gimp/2.0/python/' jest ścieżką do gimp instalację.

Pozdrawiam, Karlo.

+0

Czy próbowałeś "podstawowego przepływu pracy": ładowanie obrazu + manipulowanie + zapisywanie? @jsbueno mówi coś innego i jest kontrybutorem – AsTeR

+3

Po tym, jak wypróbowałem podstawowy przepływ pracy z wywołaniem funkcji pdb, otrzymałem ten sam błąd. Dodanie ścieżki gimp do Pythona nie jest rozwiązaniem do uruchamiania funkcji pdb bez gima. Mój błąd. –

+2

Można importować moduły, ale bez GIMP działa, nie działa - zamiast, Python kończy z „LibGimpBase błędów **: gimp_wire_write_msg: protokół przewód nie został zainicjowany ” – jsbueno

0

Jedną z opcji może być utworzenie procesu odsłuchowego wewnątrz gima jako skryptu (może to mieć wpływ na blokowanie interfejsu użytkownika, tutaj będzie potrzebne eksperymentowanie), a następnie pobranie go do odsłuchania kolejki pracy beanstalkd. następnie w zewnętrznych procesach składania zleceń pracy w kolejce beanstalk i beanstalk można przetworzyć te zamówienia poza proces.

Z tym wszystkim, co powiedziałem, 99% przypadków użycia mogłem sobie wyobrazić, że chcesz to zrobić, być może ImageMagick byłby lepszym wyborem niż gimp, ponieważ jest to rodzaj przeznaczony do zadań, które wyobrażam sobie, że jesteś zainteresowany

+0

GIMP może być uruchomiony przez linię poleceń bez Interfejs użytkownika. Działa dobrze i możesz umieścić w nim swój skrypt, by słuchać pracy. – AsTeR

Powiązane problemy