Gimp:как я могу получить координаты точек инструмента path?
Я новичок в программировании GIMP python-fu Я потратил свои 4 дня без везения, чтобы выяснить, какие функции лучше всего использовать, чтобы получить координаты нарисованного пути и показать вывод в окне сообщения gtk, как следующее изображение.
пожалуйста, учтите, что я разрабатываю на машине windows
Я пробовал свой код так:
import gtk, gimpui
from gimpfu import *
def debugMessage(Message):
dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, Message)
dialog.run()
dialog.hide()
def python_fu_mahdicoordinates(image, layer):
vectors = pdb.gimp_image_get_active_vectors(image)
nstrokes, strokes = pdb.gimp_vectors_get_strokes(vectors)
stroke_type, n_points, cpoints, closed = pdb.gimp_vectors_stroke_get_points(vectors, strokes[0])
x0 = cpoints[0]
y0 = cpoints[1]
x1 = cpoints[6]
y1 = cpoints[7]
x2 = cpoints[12]
y2 = cpoints[13]
x3 = cpoints[18]
y3 = cpoints[19]
debugMessage('(' + str(x0) + ', ' + str(y0) + ', '+str(x1) + ', '+str(y1) + ', '+str(x2) + ', '+str(y2) + ', '+str(x3) + ', '+str(y3) + ')')
return
register(
"python_fu_mahdicoordinates",
"Mahdi Cooridnates",
"Get Cooridnates of any path",
"Mahdi Alkhatib", "Mahdi Alkhatib", "2016",
"Mahdi Cooridnates...",
"*",
[],
[],
python_fu_mahdicoordinates,
menu= "<Image>/Tools/Misc")
main()
иногда сам плагин не отображается в меню, иногда вообще нет выхода.
1 ответов
Я тестировал эту проблему в Ubuntu (я знаю, что это не тот же самый). Однако ваш код ничего не выводил, поэтому я смог воспроизвести хотя бы эту часть проблемы.
ваша функция имеет этот заголовок объявления:
def python_fu_mahdicoordinates(image, layer):
и register
следует называть так:
register(
"python_fu_mahdicoordinates",
"Mahdi Cooridnates",
"Get Cooridnates of any path",
"Mahdi Alkhatib", "Mahdi Alkhatib", "2016",
"Mahdi Cooridnates...",
"*",
[
(PF_IMAGE, "image", "takes current image", None),
(PF_LAYER, "layer", "takes current layer", None),
],
[],
python_fu_mahdicoordinates,
menu= "<Image>/YourNewMenu")
в измененном списке должны быть объявлены параметры, которые должна обрабатывать ваша функция. В вашем случае, изображение и слой. Это работает для меня.
Я не знайте, почему плагин иногда не появляется в вашем меню, но попробуйте объявить menu= "<Image>/YourNewMenu"
С любым именем вы хотите. Это должно породить новое меню в меню и, вероятно, полностью решит вашу проблему. Стоит попробовать.
надеюсь, это поможет.