【问题标题】:Attach text on path in GIMP在 GIMP 中的路径上附加文本
【发布时间】:2011-05-18 07:09:46
【问题描述】:

我发现 gimp API 已经有几天了(使用 python-fu),我真的很喜欢它。 但是有些事情我无法做到:在路径上附加文本。

使用用户界面来执行它非常简单(创建路径 > 创建文本 > 在工具箱中沿路径单击文本)...但是,正如您所料,我不喜欢简单的事情。这就是为什么我尝试使用 python 来实现它。

这是我已经设法做到的:

  • 创建图层
  • 在上面添加路径
  • 创建一个新文本
  • 显示全部内容

我现在要做的就是学习如何让我的文本跟随路径。

我们将不胜感激。

谢谢

【问题讨论】:

    标签: python gimp script-fu


    【解决方案1】:

    在互联网右侧(没有裸体人的那个)上进行了数小时的研究后,我还没有找到关于我的问题的太多信息。这就是为什么我决定查看 Gimp 源代码以了解神奇的“路径中的文本”实际上是如何工作的……而且似乎没有任何东西可以通过 pdb 实现此操作。

    之后,为了确定,我在 gimp 开发者的邮件列表中询问过,有人(我不知道我是否可以在这里说出他的名字)回复我:

    “文字沿 path" 函数基本上是一个 hack,从来没有打算成为一个 完成品。适当的文本沿路径功能将允许路径 进行更改并相应地更改文本。扭曲的方式 呈现的文本也不太理想。因为计划总是 功能会改变,没有为它创建 PDB 钩子 它。

    另一个告诉我如何创建自己的“路径文本”插件:

    但是,据我所知,路径中的 Bezier 笔划具有以下属性,对其控制点和句柄应用仿射变换相当于 对曲线的每个点应用相同的变换。所以你可以这样做:

    • 确定“参考路径”,即沿着文本的直线路径(或穿过文本中间)
    • 为每个笔画迭代控制点,并在每个点(“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 添加到新笔划中

    然后他鼓励我看看两个与向量做类似事情的插件,名为ribbon-path 和 slinky,可在http://gimp-path-tools.sourceforge.net/ 上找到

    我希望(感谢这两个人)这篇文章会有所帮助。

    【讨论】:

    • 确实 - 正如 gimp-development 邮件列表中提到的那样,可以添加一个 pdb 函数(我们可能无论如何都应该这样做)以便能够使用当前的文本到路径功能以编程方式。但该功能对于任何现实生活目的来说都非常糟糕,使用另一个插件或为此编码自己的插件会更好。
    猜你喜欢
    • 2011-02-06
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2013-07-24
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多