我发现 gimp API 几天了(使用 python-fu),我真的很喜欢它。但是,有些事情我无法做到:在路径上附加文本。
使用用户界面来执行它非常容易(创建路径 > 创建文本 > 在工具箱中沿路径单击文本)...但是,正如您所料,我不喜欢事情很简单。这就是为什么我尝试使用 python 来完成它。
这是我已经设法做到的:
- 创建一个图层
- 在其上添加路径
- 创建一个新文本
- 显示整个事情
我现在要做的就是学习如何让我的文本跟随路径。
帮助将不胜感激。
谢谢
在互联网右侧(没有裸体人的那个)上进行了数小时的研究后,我还没有找到太多关于我的问题的信息。这就是为什么我决定查看 Gimp 源代码,以了解神奇的“路径文本”实际上是如何工作的……而且似乎没有任何事情可以通过 pdb 使该操作可用。
在那之后,为了确定,我在 gimp 开发人员的邮件列表中询问了某个人(我不知道我是否可以在这里说出他的名字)回复我:
“沿路径的文本”功能基本上是一种 hack,并且从未打算成为最终产品。适当的文本沿路径功能将允许更改路径并相应地更改文本。扭曲文本的呈现方式也不太理想。因为计划始终是功能会改变,所以没有为它创建 PDB 挂钩。
另一个告诉我如何创建自己的“沿路径文本”插件:
但是,据我所知,路径中的贝塞尔笔划具有以下属性,将仿射变换应用于其控制点和手柄相当于对曲线的每个点应用相同的变换。所以你可以做这样的事情:
- 确定“参考路径”,即沿着文本的直线路径(或穿过文本中间)
- 对于每个笔画迭代控制点,并在每个点(“C”):
- 确定参考路径上的投影(到参考路径原点的距离)(elt 称之为“R”)和到它的距离
- 找到目标路径上的对应点 (pdb.gimp_path_get_point_at_dist()), "R'"
- 找到新控制点 C' 的位置:与目标路径的距离相同,垂直
- 计算手柄的位置:
- 计算 H 和 C 之间的 dx/dy
- 从新的控制点 C' 计算等效位置 H'
- 应用旋转,以 C' 为中心,角度为 R' 中目标路径的方向(由之前的 gimp_path_get_point_at_dist() 返回)以产生新的手柄位置 (H")
- 重复第二个手柄
- 将三元组 C'、H"1、H"2 添加到新笔划中
Then he encouraged me to look at two plugins doing things similar with vectors, named ribbon-path and slinky, and available on http://gimp-path-tools.sourceforge.net/
I hope (thanks to these two guys) this post will help.