GIMP Python,基于路径的选择与菜单项不同 "From Path"
GIMP Python, selection based on path not the same as menu item "From Path"
我使用 Select -> To Path
在 GIMP 2.8 中创建了一个包含多个路径的图像。现在我想创建一个 Python 脚本,它将循环遍历所有这些路径,根据每个路径进行选择,将选择剪切为新图像,做一些额外的事情,
并将每个剪切图保存为单独的 PNG 图像。
到目前为止,我已经得到了这个 Python 脚本,我可以从 Filters -> Paths
开始将其作为菜单项:
#!/usr/bin/env python
# coding: utf-8
from gimpfu import *
import os
def export_paths_to_pngs(img, layer, path, vis):
# get all paths (internally called "vectors")
cnt, vectors = pdb.gimp_image_get_vectors(img)
if (cnt > 0):
# iterate all paths
for n in vectors:
v = gimp.Vectors.from_id(n)
# only visible paths
if (v.visible):
st = v.strokes
sufix = 0
# iterate all strokes in vector
for ss in st:
type, num_pnts, cntrlpnts, closed = pdb.gimp_vectors_stroke_get_points(v, ss.ID)
pdb.gimp_image_select_polygon(img, CHANNEL_OP_REPLACE, len(cntrlpnts), cntrlpnts)
# tell gimp about our plugin
register(
"python_fu_export_paths_to_png",
"Export paths as png files",
"Export paths as png files",
"BdR",
"BdR",
"2017",
"<Image>/Filters/Paths/Export paths to png", # menu path
"", # Create a new image, don't work on an existing one
[
(PF_DIRNAME, "export_directory", "Export destination directory", "/tmp"),
(PF_TOGGLE, "p2", "TOGGLE:", 1)
],
[],
export_paths_to_pngs
)
main()
但是,问题是 python 函数 gimp_image_select_polygon
没有按预期进行选择。
选择似乎在贝塞尔曲线(或类似的东西)上有一些差异,这与它所基于的路径不完全相同。
另一方面,菜单项 From Path
确实可以正常工作,它根据路径做出了完美的选择。见下图:
所以我的问题是:
- 菜单项
Select -> From Path
和GimpPython函数有什么区别gimp_image_select_polygon
- 我是否错误地使用了函数
gimp_image_select_polygon
,或者我应该使用其他函数吗?
- 失败了,有没有办法直接从 Python 调用菜单项
From Path
?
不要使用
pdb.gimp_image_select_polygon(...)
用于创建多边形选区(类似于 "polygon" 模式下的徒手选区)。你应该使用
pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,path)
(全程路径,无需一笔一笔)
PS:您在路径上迭代的代码非常人为。它通常很简单:
for v in img.vectors:
if v.visible:
我使用 Select -> To Path
在 GIMP 2.8 中创建了一个包含多个路径的图像。现在我想创建一个 Python 脚本,它将循环遍历所有这些路径,根据每个路径进行选择,将选择剪切为新图像,做一些额外的事情,
并将每个剪切图保存为单独的 PNG 图像。
到目前为止,我已经得到了这个 Python 脚本,我可以从 Filters -> Paths
开始将其作为菜单项:
#!/usr/bin/env python
# coding: utf-8
from gimpfu import *
import os
def export_paths_to_pngs(img, layer, path, vis):
# get all paths (internally called "vectors")
cnt, vectors = pdb.gimp_image_get_vectors(img)
if (cnt > 0):
# iterate all paths
for n in vectors:
v = gimp.Vectors.from_id(n)
# only visible paths
if (v.visible):
st = v.strokes
sufix = 0
# iterate all strokes in vector
for ss in st:
type, num_pnts, cntrlpnts, closed = pdb.gimp_vectors_stroke_get_points(v, ss.ID)
pdb.gimp_image_select_polygon(img, CHANNEL_OP_REPLACE, len(cntrlpnts), cntrlpnts)
# tell gimp about our plugin
register(
"python_fu_export_paths_to_png",
"Export paths as png files",
"Export paths as png files",
"BdR",
"BdR",
"2017",
"<Image>/Filters/Paths/Export paths to png", # menu path
"", # Create a new image, don't work on an existing one
[
(PF_DIRNAME, "export_directory", "Export destination directory", "/tmp"),
(PF_TOGGLE, "p2", "TOGGLE:", 1)
],
[],
export_paths_to_pngs
)
main()
但是,问题是 python 函数 gimp_image_select_polygon
没有按预期进行选择。
选择似乎在贝塞尔曲线(或类似的东西)上有一些差异,这与它所基于的路径不完全相同。
另一方面,菜单项 From Path
确实可以正常工作,它根据路径做出了完美的选择。见下图:
所以我的问题是:
- 菜单项
Select -> From Path
和GimpPython函数有什么区别gimp_image_select_polygon
- 我是否错误地使用了函数
gimp_image_select_polygon
,或者我应该使用其他函数吗? - 失败了,有没有办法直接从 Python 调用菜单项
From Path
?
不要使用
pdb.gimp_image_select_polygon(...)
用于创建多边形选区(类似于 "polygon" 模式下的徒手选区)。你应该使用
pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,path)
(全程路径,无需一笔一笔)
PS:您在路径上迭代的代码非常人为。它通常很简单:
for v in img.vectors:
if v.visible: