『漫游』酷论坛>『影音数码技术学习交流』>[分享]AvsGenStr: 同时将 ..
[分享]AvsGenStr: 同时将多个Avisynth变量转成字符串
linuxyouxia@2011-12-16 02:29
闲着无聊
下载:http://dl.dbank.com/c0c8wuws3r
avs脚本里看到过这样的写法
- mt_lutxy(tmp, method, yexpr="x y == x x x y - abs "+string(Szrp)+" / 1 "+string(Spwr)+" / ^ "+string(Szrp)+" * "+string(str)+" * x y - x y - abs / * x y - 2 ^ "
- \ +string(Szrp)+" 2 ^ "+string(SdmpLo)+" + * x y - 2 ^ "+string(SdmpLo)+" + "+string(Szrp)+" 2 ^ * / * 1 "
- \ +string(SdmpHi)+" 0 == 0 "+string(Szrp)+" "+string(SdmpHi)+" / 4 ^ ? + 1 "+string(SdmpHi)+" 0 == 0 x y - abs "+string(SdmpHi)+" / 4 ^ ? + / * + ?",U=1,V=1)
看着不是很舒服,于是写了个插件,能够这样写
- yexp = AGS("x y == x x x y - abs $Szrp / 1 $Spwr / ^ $Szrp * $str * x y - x y - abs / * x y - 2 ^ "
- \ +"$Szrp 2 ^ $SdmpLo + * x y - 2 ^ $SdmpLo + $Szrp 2 ^ * / * 1 "
- \ +"$SdmpHi 0 == 0 $Szrp $SdmpHi / 4 ^ ? + 1 $SdmpHi 0 == 0 x y - abs $SdmpHi / 4 ^ ? + / * + ?")
- mt_lutxy(tmp, method, yexpr=yexp,U=1,V=1)
AGS(string exp)
注意请用LoadCPlugin载入
测试:
- LoadCPlugin("AvsGenStr.dll")
- BlankClip()
- BoolVar = true
- IntVar = 255
- FloatVar = 90.12345678
- StrVar = "The quick brown fox jumps over the lazy dog"
- A = Subtitle(AGS("""AGS: $BoolVar $IntVar $FloatVar$StrVar $"""))
- B = Subtitle("AGS: "+String(BoolVar)+" "+String(IntVar)+" "+String(FloatVar)+String(StrVar)+" $"))
- Interleave(A, B)
[ 此帖被linuxyouxia在2011-12-16 02:43重新编辑 ]
linuxyouxia@2011-12-20 13:15
http://dl.dbank.com/c0hrhasuf2
AvsGenStr20111220
修正两个Bug
1:修正 如果exp参数字符串以 $[变量名称] 结尾,那么这个变量不会被解析
2:和Free Pascal字符串类型实现有关,调用avs_save_string,避免返回的字符串被释放掉
| TOP