TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

标题: 文字描边test [打印本页]

作者: milkyjing    时间: 2011-9-1 21:17:14     标题: 文字描边test

主要借助由 tcaxLib.pyd 提供的 TextOutlinePoints 函数获取文字边框点集, 然后按顺序将其显示出来.
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _Fs
  4.     global Font
  5.     _Fs = GetVal(val_FontSize)
  6.     Font = InitFont(GetVal(val_FontFileName), GetVal(val_FaceID), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)

  7. def tcaxPy_Fin():
  8.     FinFont(Font)

  9. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):

  10.     ASS_BUF = []
  11.     TCS_BUF = []

  12.     ass_main(ASS_BUF, SubL(_BT + 200, _ET), pos(_X, _Y) + color1('00FFFF') + bord(0) + blur(4) + fad(400, 0), _TXT)

  13.     dx = _X - int(_A / 2 + 0.5)
  14.     dy = _Y - int(_Fs / 2 + 0.5)
  15.     outline = TextOutlinePoints(Font, _TXT, 1.0)
  16.     num = len(outline)
  17.     dur = 200
  18.     for i in range(num):
  19.         ts = _BT + dur * i / num
  20.         te = _ET
  21.         x = dx + outline[i][0]
  22.         y = dy + outline[i][1]
  23.         EFT = pos(x, y) + alpha1(0) + alpha3(150) + alpha4(200) + bord(1) + shad(1) + be(1) + \
  24.               color1('0000FF') + color3('FF00FF') + color4('FFFF00') + fad(200, 0)
  25.         ass_main(ASS_BUF, SubL(ts, te, 1, Pix_Style), EFT, PixPt())

  26.     return (ASS_BUF, TCS_BUF)
复制代码


附件: [脚本] outline.py (2011-9-1 21:25:03, 1.08 KB) / 下载次数 3548
http://tcax.org/forum.php?mod=attachment&aid=NDh8N2M0YmQ5OGJ8MTczMjIyNjU1N3wwfDA%3D

附件: [预览] preview.mp4 (2011-9-1 21:25:04, 98.15 KB) / 下载次数 3553
http://tcax.org/forum.php?mod=attachment&aid=NDl8OTU0ZWQzYWF8MTczMjIyNjU1N3wwfDA%3D
作者: kk123456    时间: 2012-6-27 09:15:19

可以获取图像边框吗?比如我用ass画个椭圆,我想获取它的边框作描边的特效,请问该如何做呢?
作者: kk123456    时间: 2012-6-27 23:33:33

不知python中有没有画椭圆的函数,用贝赛尔曲线弄了半天也弄不出个,用RandCir再加
fry就有点像,但再加frz似乎没变化。
作者: 四月一日 君寻    时间: 2012-6-28 09:47:12

居然有人注意到这货了 这函数写出来基本没人用过
作者: milkyjing    时间: 2012-6-28 12:28:35

kk123456 发表于 2012-6-27 09:15
可以获取图像边框吗?比如我用ass画个椭圆,我想获取它的边框作描边的特效,请问该如何做呢? ...


这里有个暂未公开的例子(需要用到util.cairo模块,虽然已经进行了一定程度的封装)
ass_draw_to_points.rar (4.04 KB, 下载次数: 3136)

另外,这个例子可做一定的参考 http://www.tcax.org/forum.php?mod=viewthread&tid=52



附件: ass_draw_to_points.rar (2012-6-28 12:27:38, 4.04 KB) / 下载次数 3136
http://tcax.org/forum.php?mod=attachment&aid=NjU3fGM4MzAwMDFlfDE3MzIyMjY1NTd8MHww
作者: milkyjing    时间: 2012-6-28 12:30:27

kk123456 发表于 2012-6-27 23:33
不知python中有没有画椭圆的函数,用贝赛尔曲线弄了半天也弄不出个,用RandCir再加
fry就有点像,但再加frz ...


根据上一帖提供的脚本,可以直接用ASSDraw来绘制椭圆。。。

补充:或者也可以直接利用数学的椭圆方程自行计算,贝塞尔曲线也是按照公式计算出来的。

椭圆参数方程:x(t) = a*cos(t), y(t) = b*sin(t)






欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/) Powered by Discuz! X2