2016-01-24 2 views
6

Я новичок в программировании python-fu gimp Я провел 4 дня без каких-либо уловок, чтобы выяснить, какие из них лучше всего подходят для того, чтобы получить координаты рисованного пути и показать вывод в окне сообщений gtk, например следующее изображение.Gimp: Как я могу получить координаты точек траектории?

enter image description here

Пожалуйста, обратите внимание, что я разрабатываю на окна машины

Я попробовал свой код так:

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() 

Иногда сам плагин не отображается в меню, иногда не выход вообще.

ответ

2

Я тестировал эту проблему в 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" с любым именем, которое вы хотите. Это должно создать новое меню в строке меню и, вероятно, полностью решит вашу проблему. Стоит попробовать.

Надеюсь, это поможет.

Смежные вопросы