Прикрепить текст по пути в GIMP - PullRequest
3 голосов
/ 18 мая 2011

Я открываю gimp API уже несколько дней (используя python-fu), и мне это действительно нравится.Однако есть кое-что, что я не могу сделать: прикрепить текст к пути.

Использовать пользовательский интерфейс для его выполнения довольно легко (создать путь> создать текст> щелкнуть текст вдоль пути внабор инструментов) ... но, как вы могли ожидать, я не люблю, когда все просто.Вот почему я пытаюсь сделать это, используя python.

Вот что мне уже удалось сделать:

  • создать слой
  • добавить путь к нему
  • создать новый текст
  • показать все это

Все, что мне сейчас нужно сделать, - это научиться заставлять мой текст следовать по пути.

Помощь будет принята с благодарностью.

Спасибо

1 Ответ

4 голосов
/ 19 мая 2011

После нескольких часов исследований в правой части Интернета (без голых людей) я не нашел так много о своем вопросе. Вот почему я решил взглянуть на исходный код Gimp, чтобы узнать, как на самом деле работает магический «текст вдоль пути» ... и, похоже, ничего не было сделано, чтобы сделать это действие доступным через pdb.

После этого, чтобы быть уверенным, я спросил в списке рассылки разработчиков gimp, и кто-то (я не знаю, разрешено ли мне назвать его имя прямо здесь) ответил мне так:

Текст вдоль Путь "функция в основном взломать, и никогда не был предназначен для конечный продукт. Правильная функция text-on-path позволила бы путь быть изменены и изменить текст соответственно. То, как искривленный Текст отображается также не идеально. Потому что план был всегда что функциональность изменится, никакой ловушки PDB никогда не создавался для это.

Другой рассказал мне, как создать свой собственный плагин «Текст вдоль пути»:

Однако, насколько мне известно, штрихи Безье на пути имеют следующее свойство: применение аффинного преобразования к их контрольным точкам и маркерам эквивалентно применяя одно и то же преобразование к каждой точке кривой. Таким образом, вы можете сделать что-то вроде этого:

  • определяет «контрольный путь», то есть прямой путь по тексту (или проходит через его середину)
  • для каждого мазка итерации контрольных точек и для каждой точки («С»):
    • определяют проекцию на опорной траектории (расстояние от начала отсчета пути) (ELT назовем это «R») и расстояние до него
    • найти соответствующую точку на целевом пути (pdb.gimp_path_get_point_at_dist ()), "R" "
    • найти положение новой контрольной точки C ': такое же расстояние до траектории цели, на перпендикуляре
    • вычислить положение ручек:
      • вычислить dx / dy между H и C
      • вычислить эквивалентную позицию H 'из новой контрольной точки C'
      • применить вращение, центрированное на C 'с углом, который является направлением целевого пути в R' (как возвращено ранее gimp_path_get_point_at_dist ()), чтобы создать новую позицию ручки (H ")
      • повторить для второй ручки
      • добавить триплет C ', H "1, H" 2 к новому штриху

Затем он посоветовал мне взглянуть на два плагина, делающие вещи, сходные с векторами, называемые ленточным путем и slinky, и доступные на http://gimp -path-tools.sourceforge.net /

Надеюсь (спасибо этим двум парням) этот пост поможет.

...