️ gif改为使用base64发送 (#664)

This commit is contained in:
GenesisAN 2023-04-17 12:40:45 +08:00 committed by GitHub
parent 667c9fbcca
commit 296fd60cd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 123 additions and 83 deletions

2
go.mod
View File

@ -7,7 +7,7 @@ require (
github.com/FloatTech/AnimeAPI v1.6.1-0.20230409024643-f25135dee0da github.com/FloatTech/AnimeAPI v1.6.1-0.20230409024643-f25135dee0da
github.com/FloatTech/floatbox v0.0.0-20230331064925-9af336a84944 github.com/FloatTech/floatbox v0.0.0-20230331064925-9af336a84944
github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08 github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08
github.com/FloatTech/imgfactory v0.2.2-0.20230322091809-b0ddbe44b94b github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef
github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9 github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9
github.com/FloatTech/sqlite v1.6.2 github.com/FloatTech/sqlite v1.6.2
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b

4
go.sum
View File

@ -8,8 +8,8 @@ github.com/FloatTech/floatbox v0.0.0-20230331064925-9af336a84944 h1:/eQoMa6Aj3co
github.com/FloatTech/floatbox v0.0.0-20230331064925-9af336a84944/go.mod h1:FwQm6wk+b4wuW54KCKn3zccMX47Q5apnHD/Yakzv0fI= github.com/FloatTech/floatbox v0.0.0-20230331064925-9af336a84944/go.mod h1:FwQm6wk+b4wuW54KCKn3zccMX47Q5apnHD/Yakzv0fI=
github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08 h1:dPLeoiTVSBlgls+66EB/UJ2e38BaASmBN5nANaycSBU= github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08 h1:dPLeoiTVSBlgls+66EB/UJ2e38BaASmBN5nANaycSBU=
github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI= github.com/FloatTech/gg v1.1.3-0.20230226151425-6ea91286ba08/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI=
github.com/FloatTech/imgfactory v0.2.2-0.20230322091809-b0ddbe44b94b h1:VMNci4SWBySdw/6poqF9Dn9zlT5ntTFSJOEEBjRnJ/4= github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef h1:CJbK/2FRwPuZpeb6M4sWK2d7oXDnBEGhpkQuQrgc91A=
github.com/FloatTech/imgfactory v0.2.2-0.20230322091809-b0ddbe44b94b/go.mod h1:el5hGpj1C1bDRxcTXYRwEivDCr40zZeJpcrLrB1fajs= github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef/go.mod h1:el5hGpj1C1bDRxcTXYRwEivDCr40zZeJpcrLrB1fajs=
github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9 h1:hffajvmQFfP68U6wUwHemPuuwCUoss+SEFfoLYwbGwE= github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9 h1:hffajvmQFfP68U6wUwHemPuuwCUoss+SEFfoLYwbGwE=
github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9/go.mod h1:NBFPhWae4hqVMeG8ELBBnUQkKce3nDjkljVn6PdiUNs= github.com/FloatTech/rendercard v0.0.10-0.20230223064326-45d29fa4ede9/go.mod h1:NBFPhWae4hqVMeG8ELBBnUQkKce3nDjkljVn6PdiUNs=
github.com/FloatTech/sqlite v1.6.2 h1:FytbExjpvYalZxxITtmSenHiPGLPUvlz47LY/P0SCCw= github.com/FloatTech/sqlite v1.6.2 h1:FytbExjpvYalZxxITtmSenHiPGLPUvlz47LY/P0SCCw=

View File

@ -19,7 +19,7 @@ func mo(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "摸.gif" //name := cc.usrdir + "摸.gif"
c := dlrange("mo", 5, &wg, func(e error) { c := dlrange("mo", 5, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -44,7 +44,8 @@ func mo(cc *context, value ...string) (string, error) {
imgs[3].InsertBottom(tou, 85, 75, 27, 37).Image(), imgs[3].InsertBottom(tou, 85, 75, 27, 37).Image(),
imgs[4].InsertBottom(tou, 90, 70, 22, 42).Image(), imgs[4].InsertBottom(tou, 90, 70, 22, 42).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, mo)) g := imgfactory.MergeGif(1, mo)
return imgfactory.GIF2Base64(g)
} }
// cuo 搓 // cuo 搓
@ -53,7 +54,7 @@ func cuo(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "搓.gif" //name := cc.usrdir + "搓.gif"
c := dlrange("cuo", 5, &wg, func(e error) { c := dlrange("cuo", 5, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -82,7 +83,8 @@ func cuo(cc *context, value ...string) (string, error) {
imgs[3].InsertBottomC(m3.Image(), 0, 0, 75, 130).Image(), imgs[3].InsertBottomC(m3.Image(), 0, 0, 75, 130).Image(),
imgs[4].InsertBottomC(m4.Image(), 0, 0, 75, 130).Image(), imgs[4].InsertBottomC(m4.Image(), 0, 0, 75, 130).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(5, cuo)) g := imgfactory.MergeGif(5, cuo)
return imgfactory.GIF2Base64(g)
} }
// qiao 敲 // qiao 敲
@ -91,7 +93,7 @@ func qiao(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "敲.gif" //name := cc.usrdir + "敲.gif"
c := dlrange("qiao", 2, &wg, func(e error) { c := dlrange("qiao", 2, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -113,7 +115,8 @@ func qiao(cc *context, value ...string) (string, error) {
imgs[0].InsertUp(tou, 40, 33, 57, 52).Image(), imgs[0].InsertUp(tou, 40, 33, 57, 52).Image(),
imgs[1].InsertUp(tou, 38, 36, 58, 50).Image(), imgs[1].InsertUp(tou, 38, 36, 58, 50).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, qiao)) g := imgfactory.MergeGif(1, qiao)
return imgfactory.GIF2Base64(g)
} }
// chi 吃 // chi 吃
@ -122,7 +125,7 @@ func chi(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "吃.gif" //name := cc.usrdir + "吃.gif"
c := dlrange("chi", 3, &wg, func(e error) { c := dlrange("chi", 3, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -145,7 +148,8 @@ func chi(cc *context, value ...string) (string, error) {
imgs[1].InsertBottom(tou, 0, 0, 1, 38).Image(), imgs[1].InsertBottom(tou, 0, 0, 1, 38).Image(),
imgs[2].InsertBottom(tou, 0, 0, 1, 38).Image(), imgs[2].InsertBottom(tou, 0, 0, 1, 38).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, chi)) g := imgfactory.MergeGif(1, chi)
return imgfactory.GIF2Base64(g)
} }
// ceng 蹭 // ceng 蹭
@ -154,7 +158,7 @@ func ceng(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "蹭.gif" //name := cc.usrdir + "蹭.gif"
c := dlrange("ceng", 6, &wg, func(e error) { c := dlrange("ceng", 6, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -184,7 +188,8 @@ func ceng(cc *context, value ...string) (string, error) {
imgs[4].InsertUp(tou, 75, 77, 56, 110).InsertUp(imgfactory.Rotate(tou2, -66, 132, 80).Image(), 0, 0, 78, 40).Image(), imgs[4].InsertUp(tou, 75, 77, 56, 110).InsertUp(imgfactory.Rotate(tou2, -66, 132, 80).Image(), 0, 0, 78, 40).Image(),
imgs[5].InsertUp(tou, 75, 77, 62, 102).InsertUp(tou2, 71, 100, 110, 94).Image(), imgs[5].InsertUp(tou, 75, 77, 62, 102).InsertUp(tou2, 71, 100, 110, 94).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, ceng)) g := imgfactory.MergeGif(8, ceng)
return imgfactory.GIF2Base64(g)
} }
// ken 啃 // ken 啃
@ -193,7 +198,7 @@ func ken(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "啃.gif" //name := cc.usrdir + "啃.gif"
c := dlrange("ken", 16, &wg, func(e error) { c := dlrange("ken", 16, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -229,7 +234,8 @@ func ken(cc *context, value ...string) (string, error) {
imgs[14].Image(), imgs[14].Image(),
imgs[15].Image(), imgs[15].Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ken)) g := imgfactory.MergeGif(7, ken)
return imgfactory.GIF2Base64(g)
} }
// pai 拍 // pai 拍
@ -238,7 +244,7 @@ func pai(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "拍.gif" //name := cc.usrdir + "拍.gif"
c := dlrange("pai", 2, &wg, func(e error) { c := dlrange("pai", 2, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -260,7 +266,8 @@ func pai(cc *context, value ...string) (string, error) {
imgs[0].InsertUp(tou, 0, 0, 1, 47).Image(), imgs[0].InsertUp(tou, 0, 0, 1, 47).Image(),
imgs[1].InsertUp(tou, 0, 0, 1, 67).Image(), imgs[1].InsertUp(tou, 0, 0, 1, 67).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, pai)) g := imgfactory.MergeGif(1, pai)
return imgfactory.GIF2Base64(g)
} }
// xqe 冲 // xqe 冲
@ -269,7 +276,7 @@ func xqe(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "冲.gif" //name := cc.usrdir + "冲.gif"
c := dlrange("xqe", 2, &wg, func(e error) { c := dlrange("xqe", 2, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -291,7 +298,8 @@ func xqe(cc *context, value ...string) (string, error) {
imgs[0].InsertUp(tou, 30, 30, 15, 53).Image(), imgs[0].InsertUp(tou, 30, 30, 15, 53).Image(),
imgs[1].InsertUp(tou, 30, 30, 40, 53).Image(), imgs[1].InsertUp(tou, 30, 30, 40, 53).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, chong)) g := imgfactory.MergeGif(1, chong)
return imgfactory.GIF2Base64(g)
} }
// diu 丢 // diu 丢
@ -300,7 +308,7 @@ func diu(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "丢.gif" //name := cc.usrdir + "丢.gif"
c := dlrange("diu", 8, &wg, func(e error) { c := dlrange("diu", 8, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -328,7 +336,8 @@ func diu(cc *context, value ...string) (string, error) {
imgs[6].InsertUp(tou, 35, 35, 259, 31).Image(), imgs[6].InsertUp(tou, 35, 35, 259, 31).Image(),
imgs[7].InsertUp(tou, 175, 175, -50, 220).Image(), imgs[7].InsertUp(tou, 175, 175, -50, 220).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, diu)) g := imgfactory.MergeGif(7, diu)
return imgfactory.GIF2Base64(g)
} }
// kiss 亲 // kiss 亲
@ -338,7 +347,7 @@ func kiss(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 13 piclen := 13
name := cc.usrdir + "Kiss.gif" //name := cc.usrdir + "Kiss.gif"
c := dlrange("kiss", piclen, &wg, func(e error) { c := dlrange("kiss", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -367,7 +376,8 @@ func kiss(cc *context, value ...string) (string, error) {
kiss[i] = imgs[i].InsertUp(tou, 50, 50, userLocs[i][0], userLocs[i][1]). kiss[i] = imgs[i].InsertUp(tou, 50, 50, userLocs[i][0], userLocs[i][1]).
InsertUp(tou2, 40, 40, selfLocs[i][0], selfLocs[i][1]).Image() InsertUp(tou2, 40, 40, selfLocs[i][0], selfLocs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, kiss)) g := imgfactory.MergeGif(7, kiss)
return imgfactory.GIF2Base64(g)
} }
// garbage 垃圾 垃圾桶 // garbage 垃圾 垃圾桶
@ -377,7 +387,7 @@ func garbage(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 25 piclen := 25
name := cc.usrdir + "Garbage.gif" //name := cc.usrdir + "Garbage.gif"
c := dlrange("garbage", piclen, &wg, func(e error) { c := dlrange("garbage", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -400,7 +410,8 @@ func garbage(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
garbage[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image() garbage[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, garbage)) g := imgfactory.MergeGif(7, garbage)
return imgfactory.GIF2Base64(g)
} }
// thump 捶 // thump 捶
@ -410,7 +421,7 @@ func thump(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 4 piclen := 4
name := cc.usrdir + "Thump.gif" //name := cc.usrdir + "Thump.gif"
c := dlrange("thump", piclen, &wg, func(e error) { c := dlrange("thump", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -433,7 +444,8 @@ func thump(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
thump[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() thump[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, thump)) g := imgfactory.MergeGif(7, thump)
return imgfactory.GIF2Base64(g)
} }
// jiujiu 啾啾 // jiujiu 啾啾
@ -443,7 +455,7 @@ func jiujiu(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 8 piclen := 8
name := cc.usrdir + "Jiujiu.gif" //name := cc.usrdir + "Jiujiu.gif"
c := dlrange("jiujiu", piclen, &wg, func(e error) { c := dlrange("jiujiu", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -465,7 +477,8 @@ func jiujiu(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
jiujiu[i] = imgs[i].InsertBottom(im.Image(), 0, 0, 0, 0).Image() jiujiu[i] = imgs[i].InsertBottom(im.Image(), 0, 0, 0, 0).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, jiujiu)) g := imgfactory.MergeGif(7, jiujiu)
return imgfactory.GIF2Base64(g)
} }
// knock 2敲 // knock 2敲
@ -475,7 +488,7 @@ func knock(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 8 piclen := 8
name := cc.usrdir + "Knock.gif" //name := cc.usrdir + "Knock.gif"
c := dlrange("knock", piclen, &wg, func(e error) { c := dlrange("knock", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -498,7 +511,8 @@ func knock(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
knock[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() knock[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, knock)) g := imgfactory.MergeGif(7, knock)
return imgfactory.GIF2Base64(g)
} }
// 听音乐 listenMusic // 听音乐 listenMusic
@ -508,7 +522,7 @@ func listenMusic(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 1 piclen := 1
name := cc.usrdir + "ListenMusic.gif" //name := cc.usrdir + "ListenMusic.gif"
c := dlrange("listen_music", piclen, &wg, func(e error) { c := dlrange("listen_music", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -530,7 +544,8 @@ func listenMusic(cc *context, value ...string) (string, error) {
for i := 0; i < 36; i++ { for i := 0; i < 36; i++ {
listenmusic[i] = imgs[0].InsertBottomC(imgfactory.Rotate(face, float64(-i*10), 215, 215).Image(), 0, 0, 207, 207).Image() listenmusic[i] = imgs[0].InsertBottomC(imgfactory.Rotate(face, float64(-i*10), 215, 215).Image(), 0, 0, 207, 207).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, listenmusic)) g := imgfactory.MergeGif(7, listenmusic)
return imgfactory.GIF2Base64(g)
} }
// loveYou 永远爱你 // loveYou 永远爱你
@ -540,7 +555,7 @@ func loveYou(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 2 piclen := 2
name := cc.usrdir + "LoveYou.gif" //name := cc.usrdir + "LoveYou.gif"
c := dlrange("love_you", piclen, &wg, func(e error) { c := dlrange("love_you", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -563,7 +578,8 @@ func loveYou(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
loveyou[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() loveyou[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, loveyou)) g := imgfactory.MergeGif(7, loveyou)
return imgfactory.GIF2Base64(g)
} }
// pat 2拍 // pat 2拍
@ -573,7 +589,7 @@ func pat(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 10 piclen := 10
name := cc.usrdir + "Pat.gif" //name := cc.usrdir + "Pat.gif"
c := dlrange("pat", piclen, &wg, func(e error) { c := dlrange("pat", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -605,7 +621,8 @@ func pat(cc *context, value ...string) (string, error) {
for i := 0; i < len(pat); i++ { for i := 0; i < len(pat); i++ {
pat[i] = p[seq[i]] pat[i] = p[seq[i]]
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, pat)) g := imgfactory.MergeGif(7, pat)
return imgfactory.GIF2Base64(g)
} }
// jackUp 顶 // jackUp 顶
@ -615,7 +632,7 @@ func jackUp(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 23 piclen := 23
name := cc.usrdir + "JackUp.gif" //name := cc.usrdir + "JackUp.gif"
c := dlrange("play", piclen, &wg, func(e error) { c := dlrange("play", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -648,7 +665,8 @@ func jackUp(cc *context, value ...string) (string, error) {
play = append(play, p[0:8]...) play = append(play, p[0:8]...)
play = append(play, p[12:18]...) play = append(play, p[12:18]...)
play = append(play, p[18:23]...) play = append(play, p[18:23]...)
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, play)) g := imgfactory.MergeGif(7, play)
return imgfactory.GIF2Base64(g)
} }
// pound 捣 // pound 捣
@ -658,7 +676,7 @@ func pound(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 8 piclen := 8
name := cc.usrdir + "Pound.gif" //name := cc.usrdir + "Pound.gif"
c := dlrange("pound", piclen, &wg, func(e error) { c := dlrange("pound", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -681,7 +699,8 @@ func pound(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
pound[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() pound[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, pound)) g := imgfactory.MergeGif(7, pound)
return imgfactory.GIF2Base64(g)
} }
// punch 打拳 // punch 打拳
@ -691,7 +710,7 @@ func punch(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 13 piclen := 13
name := cc.usrdir + "Punch.gif" //name := cc.usrdir + "Punch.gif"
c := dlrange("punch", piclen, &wg, func(e error) { c := dlrange("punch", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -714,7 +733,8 @@ func punch(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
punch[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]-15).Image() punch[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]-15).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, punch)) g := imgfactory.MergeGif(7, punch)
return imgfactory.GIF2Base64(g)
} }
// roll 滚 // roll 滚
@ -724,7 +744,7 @@ func roll(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 8 piclen := 8
name := cc.usrdir + "roll.gif" //name := cc.usrdir + "roll.gif"
c := dlrange("roll", piclen, &wg, func(e error) { c := dlrange("roll", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -747,7 +767,8 @@ func roll(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
roll[i] = imgs[i].InsertBottomC(imgfactory.Rotate(im.Image(), float64(locs[i][2]), 0, 0).Image(), 0, 0, locs[i][0]+105, locs[i][1]+105).Image() roll[i] = imgs[i].InsertBottomC(imgfactory.Rotate(im.Image(), float64(locs[i][2]), 0, 0).Image(), 0, 0, locs[i][0]+105, locs[i][1]+105).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, roll)) g := imgfactory.MergeGif(7, roll)
return imgfactory.GIF2Base64(g)
} }
// suck 吸 嗦 // suck 吸 嗦
@ -757,7 +778,7 @@ func suck(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 12 piclen := 12
name := cc.usrdir + "Suck.gif" //name := cc.usrdir + "Suck.gif"
c := dlrange("suck", piclen, &wg, func(e error) { c := dlrange("suck", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -780,7 +801,8 @@ func suck(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
suck[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() suck[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, suck)) g := imgfactory.MergeGif(7, suck)
return imgfactory.GIF2Base64(g)
} }
// hammer 锤 // hammer 锤
@ -790,7 +812,7 @@ func hammer(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 7 piclen := 7
name := cc.usrdir + "Hammer.gif" //name := cc.usrdir + "Hammer.gif"
c := dlrange("hammer", piclen, &wg, func(e error) { c := dlrange("hammer", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -813,7 +835,8 @@ func hammer(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
hammer[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() hammer[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, hammer)) g := imgfactory.MergeGif(7, hammer)
return imgfactory.GIF2Base64(g)
} }
// tightly 紧贴 紧紧贴着 // tightly 紧贴 紧紧贴着
@ -823,7 +846,7 @@ func tightly(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 20 piclen := 20
name := cc.usrdir + "Tightly.gif" //name := cc.usrdir + "Tightly.gif"
c := dlrange("tightly", piclen, &wg, func(e error) { c := dlrange("tightly", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -846,13 +869,14 @@ func tightly(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
tightly[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() tightly[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, tightly)) g := imgfactory.MergeGif(7, tightly)
return imgfactory.GIF2Base64(g)
} }
// turn 转 // turn 转
func turn(cc *context, value ...string) (string, error) { func turn(cc *context, value ...string) (string, error) {
_ = value _ = value
name := cc.usrdir + "Turn.gif" //name := cc.usrdir + "Turn.gif"
face, err := cc.getLogo(0, 0) face, err := cc.getLogo(0, 0)
if err != nil { if err != nil {
return "", err return "", err
@ -865,7 +889,8 @@ func turn(cc *context, value ...string) (string, error) {
for i := 0; i < 36; i++ { for i := 0; i < 36; i++ {
turn[i] = imgfactory.Size(canvas.Image(), 0, 0).InsertUpC(imgfactory.Rotate(face, float64(10*i), 250, 250).Image(), 0, 0, 125, 125).Image() turn[i] = imgfactory.Size(canvas.Image(), 0, 0).InsertUpC(imgfactory.Rotate(face, float64(10*i), 250, 250).Image(), 0, 0, 125, 125).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, turn)) g := imgfactory.MergeGif(7, turn)
return imgfactory.GIF2Base64(g)
} }
// taiguan 抬棺 // taiguan 抬棺
@ -874,7 +899,7 @@ func taiguan(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "taiguan.gif" //name := cc.usrdir + "taiguan.gif"
c := dlrange("taiguan", 20, &wg, func(e error) { c := dlrange("taiguan", 20, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -914,7 +939,8 @@ func taiguan(cc *context, value ...string) (string, error) {
imgs[18].InsertUp(tou, 85, 85, 170, 65).Image(), imgs[18].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[19].InsertUp(tou, 85, 85, 175, 65).Image(), imgs[19].InsertUp(tou, 85, 85, 175, 65).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, taiguan)) g := imgfactory.MergeGif(7, taiguan)
return imgfactory.GIF2Base64(g)
} }
// zou 揍 // zou 揍
@ -923,7 +949,7 @@ func zou(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "zou.gif" //name := cc.usrdir + "zou.gif"
c := dlrange("zou", 3, &wg, func(e error) { c := dlrange("zou", 3, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -950,7 +976,8 @@ func zou(cc *context, value ...string) (string, error) {
imgs[1].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 101, 45).Image(), imgs[1].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 101, 45).Image(),
imgs[2].InsertUp(tou, 40, 40, 89, 140).InsertUp(tou2, 55, 55, 99, 40).Image(), imgs[2].InsertUp(tou, 40, 40, 89, 140).InsertUp(tou2, 55, 55, 99, 40).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, zou)) g := imgfactory.MergeGif(8, zou)
return imgfactory.GIF2Base64(g)
} }
// ci 吞 // ci 吞
@ -959,7 +986,7 @@ func ci(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "ci.gif" //name := cc.usrdir + "ci.gif"
c := dlrange("ci", 26, &wg, func(e error) { c := dlrange("ci", 26, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1005,7 +1032,8 @@ func ci(cc *context, value ...string) (string, error) {
imgs[24].Image(), imgs[24].Image(),
imgs[25].Image(), imgs[25].Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ci)) g := imgfactory.MergeGif(7, ci)
return imgfactory.GIF2Base64(g)
} }
// worship 膜拜 // worship 膜拜
@ -1014,7 +1042,7 @@ func worship(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var err error var err error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "worship.gif" //name := cc.usrdir + "worship.gif"
c := dlrange("worship", 9, &wg, func(e error) { c := dlrange("worship", 9, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -1043,7 +1071,8 @@ func worship(cc *context, value ...string) (string, error) {
imgs[7].InsertBottom(face, 140, 140, 0, 0).Image(), imgs[7].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[8].InsertBottom(face, 140, 140, 0, 0).Image(), imgs[8].InsertBottom(face, 140, 140, 0, 0).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, worship)) g := imgfactory.MergeGif(7, worship)
return imgfactory.GIF2Base64(g)
} }
// 2ceng 2蹭 // 2ceng 2蹭
@ -1052,7 +1081,7 @@ func ceng2(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "ceng2.gif" //name := cc.usrdir + "ceng2.gif"
c := dlrange("ceng2", 4, &wg, func(e error) { c := dlrange("ceng2", 4, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1076,7 +1105,8 @@ func ceng2(cc *context, value ...string) (string, error) {
imgs[2].InsertBottom(tou, 175, 175, 78, 263).Image(), imgs[2].InsertBottom(tou, 175, 175, 78, 263).Image(),
imgs[3].InsertBottom(tou, 175, 175, 78, 263).Image(), imgs[3].InsertBottom(tou, 175, 175, 78, 263).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ceng2)) g := imgfactory.MergeGif(7, ceng2)
return imgfactory.GIF2Base64(g)
} }
// dun 炖 // dun 炖
@ -1085,7 +1115,7 @@ func dun(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "dun.gif" //name := cc.usrdir + "dun.gif"
c := dlrange("dun", 5, &wg, func(e error) { c := dlrange("dun", 5, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1110,7 +1140,8 @@ func dun(cc *context, value ...string) (string, error) {
imgs[3].InsertBottom(tou, 80, 80, 85, 45).Image(), imgs[3].InsertBottom(tou, 80, 80, 85, 45).Image(),
imgs[4].InsertBottom(tou, 80, 80, 85, 45).Image(), imgs[4].InsertBottom(tou, 80, 80, 85, 45).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, dun)) g := imgfactory.MergeGif(7, dun)
return imgfactory.GIF2Base64(g)
} }
// push 滚高清重置版 过渡 // push 滚高清重置版 过渡
@ -1120,7 +1151,7 @@ func push(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 16 piclen := 16
name := cc.usrdir + "push.gif" //name := cc.usrdir + "push.gif"
c := dlrange("push", piclen, &wg, func(e error) { c := dlrange("push", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -1142,7 +1173,8 @@ func push(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
push[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-22*i), 280, 280).Image(), 0, 0, 523, 291).Image() push[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-22*i), 280, 280).Image(), 0, 0, 523, 291).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, push)) g := imgfactory.MergeGif(7, push)
return imgfactory.GIF2Base64(g)
} }
// peng 砰 // peng 砰
@ -1151,7 +1183,7 @@ func peng(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "peng.gif" //name := cc.usrdir + "peng.gif"
c := dlrange("peng", 25, &wg, func(e error) { c := dlrange("peng", 25, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1200,7 +1232,8 @@ func peng(cc *context, value ...string) (string, error) {
imgs[23].InsertUp(m4.Image(), 0, 0, 89, 159).Image(), imgs[23].InsertUp(m4.Image(), 0, 0, 89, 159).Image(),
imgs[24].InsertUp(m4.Image(), 0, 0, 86, 160).Image(), imgs[24].InsertUp(m4.Image(), 0, 0, 86, 160).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, peng)) g := imgfactory.MergeGif(8, peng)
return imgfactory.GIF2Base64(g)
} }
// klee 可莉吃 // klee 可莉吃
@ -1210,7 +1243,7 @@ func klee(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 31 piclen := 31
name := cc.usrdir + "klee.gif" //name := cc.usrdir + "klee.gif"
c := dlrange("klee", piclen, &wg, func(e error) { c := dlrange("klee", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -1233,7 +1266,8 @@ func klee(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
klee[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image() klee[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, klee)) g := imgfactory.MergeGif(7, klee)
return imgfactory.GIF2Base64(g)
} }
// hutaoken 胡桃啃 // hutaoken 胡桃啃
@ -1242,7 +1276,7 @@ func hutaoken(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "hutaoken.gif" //name := cc.usrdir + "hutaoken.gif"
c := dlrange("hutaoken", 2, &wg, func(e error) { c := dlrange("hutaoken", 2, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1264,7 +1298,8 @@ func hutaoken(cc *context, value ...string) (string, error) {
imgs[0].InsertBottom(tou, 98, 101, 108, 234).Image(), imgs[0].InsertBottom(tou, 98, 101, 108, 234).Image(),
imgs[1].InsertBottom(tou, 96, 100, 108, 237).Image(), imgs[1].InsertBottom(tou, 96, 100, 108, 237).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, hutaoken)) g := imgfactory.MergeGif(8, hutaoken)
return imgfactory.GIF2Base64(g)
} }
// lick 2舔 // lick 2舔
@ -1273,7 +1308,7 @@ func lick(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "lick.gif" //name := cc.usrdir + "lick.gif"
c := dlrange("lick", 2, &wg, func(e error) { c := dlrange("lick", 2, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1295,7 +1330,8 @@ func lick(cc *context, value ...string) (string, error) {
imgs[0].InsertUp(tou, 44, 44, 10, 138).Image(), imgs[0].InsertUp(tou, 44, 44, 10, 138).Image(),
imgs[1].InsertUp(tou, 44, 44, 10, 138).Image(), imgs[1].InsertUp(tou, 44, 44, 10, 138).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, lick)) g := imgfactory.MergeGif(8, lick)
return imgfactory.GIF2Base64(g)
} }
// tiqiu 踢球 // tiqiu 踢球
@ -1305,7 +1341,7 @@ func tiqiu(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 15 piclen := 15
name := cc.usrdir + "tiqiu.gif" //name := cc.usrdir + "tiqiu.gif"
c := dlrange("tiqiu", piclen, &wg, func(e error) { c := dlrange("tiqiu", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -1328,7 +1364,8 @@ func tiqiu(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
tiqiu[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-24*i), 0, 0).Image(), 0, 0, locs[i][0]+38, locs[i][1]+38).Image() tiqiu[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-24*i), 0, 0).Image(), 0, 0, locs[i][0]+38, locs[i][1]+38).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, tiqiu)) g := imgfactory.MergeGif(7, tiqiu)
return imgfactory.GIF2Base64(g)
} }
// cai 踩 // cai 踩
@ -1337,7 +1374,7 @@ func cai(cc *context, value ...string) (string, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var errwg error var errwg error
var m sync.Mutex var m sync.Mutex
name := cc.usrdir + "cai.gif" //name := cc.usrdir + "cai.gif"
c := dlrange("cai", 5, &wg, func(e error) { c := dlrange("cai", 5, &wg, func(e error) {
m.Lock() m.Lock()
errwg = e errwg = e
@ -1363,7 +1400,8 @@ func cai(cc *context, value ...string) (string, error) {
imgs[3].InsertBottom(tou, 85, 76, 52, 203).Image(), imgs[3].InsertBottom(tou, 85, 76, 52, 203).Image(),
imgs[4].InsertBottom(tou, 88, 82, 49, 198).Image(), imgs[4].InsertBottom(tou, 88, 82, 49, 198).Image(),
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, cai)) g := imgfactory.MergeGif(7, cai)
return imgfactory.GIF2Base64(g)
} }
// whir 2转 // whir 2转
@ -1373,7 +1411,7 @@ func whirl(cc *context, value ...string) (string, error) {
var err error var err error
var m sync.Mutex var m sync.Mutex
piclen := 15 piclen := 15
name := cc.usrdir + "whirl.gif" //name := cc.usrdir + "whirl.gif"
c := dlrange("whirl", piclen, &wg, func(e error) { c := dlrange("whirl", piclen, &wg, func(e error) {
m.Lock() m.Lock()
err = e err = e
@ -1395,7 +1433,8 @@ func whirl(cc *context, value ...string) (string, error) {
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
whirl[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-24*i), 145, 145).Image(), 0, 0, 115, 89).Image() whirl[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-24*i), 145, 145).Image(), 0, 0, 115, 89).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, whirl)) g := imgfactory.MergeGif(7, whirl)
return imgfactory.GIF2Base64(g)
} }
// always 一直 // always 一直
@ -1403,7 +1442,7 @@ func alwaysDoGif(cc *context, value ...string) (string, error) {
_ = value _ = value
var err error var err error
var face []*imgfactory.Factory var face []*imgfactory.Factory
name := cc.usrdir + "AlwaysDo.gif" //name := cc.usrdir + "AlwaysDo.gif"
face, err = imgfactory.LoadAllTrueFrames(cc.headimgsdir[0], 500, 500) face, err = imgfactory.LoadAllTrueFrames(cc.headimgsdir[0], 500, 500)
if err != nil { if err != nil {
// 载入失败尝试载入第一帧 // 载入失败尝试载入第一帧
@ -1444,5 +1483,6 @@ func alwaysDoGif(cc *context, value ...string) (string, error) {
canvas.DrawString("吗", 370, 560) canvas.DrawString("吗", 370, 560)
turn[i] = imgfactory.Size(canvas.Image(), 0, 0).Image() turn[i] = imgfactory.Size(canvas.Image(), 0, 0).Image()
} }
return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, turn)) g := imgfactory.MergeGif(8, turn)
return imgfactory.GIF2Base64(g)
} }