Я пытаюсь написать своего рода библиотеку-оболочку для GIMP, чтобы упростить мои генеративные художественные проекты, но у меня возникла проблема со взаимодействием с gimpfu из моего модуля-оболочки. Следующий код плагина работает нормально и отображает изображение с горизонтальными линиями:
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 (фон)», и добавьте функцию 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 из внешнего файла? Поможет ли как-то сделать обертку отдельным плагином?