Я пытаюсь написать своего рода библиотеку-обертку для GIMP, чтобы упростить мои проекты создания произведений, но у меня возникла проблема с интерфейсом gimpfu из моего модуля-обертки. Следующий код плагин прекрасно работает, и отображает изображение с горизонтальными линиями, проходящими через него:вызов функции gimp-fu из внешнего модуля
from gimpfu import *
from basicObjects import *
def newFilt() :
img = gimp.Image(500, 500, RGB)
background = gimp.Layer(img, "Background", 500, 500,RGB_IMAGE, 100, NORMAL_MODE)
img.add_layer(background, 1)
background.fill(BACKGROUND_FILL)
pdb.gimp_context_set_brush('1. Pixel')
pdb.gimp_context_set_brush_size(2)
for i in range(100):
Line= line([(0,5*i),(500,5*i)])
pdb.gimp_pencil(background,Line.pointcount,Line.printpoints())
gimp.Display(img)
gimp.displays_flush()
register(
"python_fu_render",
"new Image",
"Filters",
"Brendan",
"Brendan",
"2016",
"Render",
"",
[],
[],
newFilt, menu="<Image>/File/Create")
main()
класс «линии» определяется в basicObjects, и функционирует, как и ожидалось, однако, если я пытаюсь заменить «PDB. gimp_pencil (фон, Line.pointcount, Line.printpoints())»с 'Line.draw (фон)', и добавить функцию дро() к классу линии, как таковой:
from gimfu import *
class line:
"""creates a line object and defines functions specific to lines """
def __init__(self, points):
self.points = points
self.pointcount = len(points)*2
def printpoints(self):
"""converts point array in form [(x1,y1),(x2,y1)] to [x1,y1,x2,y2] as nessecary for gimp pdb calls"""
output=[]
for point in self.points:
output.append(point[0])
output.append(point[1])
return output
def draw(self,layer):
pdb.gimp_pencil(layer,self.pointcount,self.printpoints())
изображение не отображается, и в консоли ошибки gimp нет сообщений. Как я могу сделать вызов pdb из внешнего файла? Как-то сделать оболочку отдельной плагиновой помощью?