Gimp:如何获取路径工具点的坐标?
Gimp: How can I get the coordinates of path tool points?
我是 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()
有时插件本身不显示在菜单中,有时根本没有输出。
我一直在 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"
。这应该会在菜单栏中生成一个新菜单,并且可能会完全解决您的问题。值得一试。
希望对您有所帮助。
我是 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()
有时插件本身不显示在菜单中,有时根本没有输出。
我一直在 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"
。这应该会在菜单栏中生成一个新菜单,并且可能会完全解决您的问题。值得一试。
希望对您有所帮助。