From 7e11924b3f79a60ffc94f4ab9cd878d22ef0167f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 7 Feb 2023 16:39:07 +0800 Subject: [PATCH] update deps --- go.mod | 13 +- go.sum | 26 +- plugin/ai_false/ai_false.go | 18 +- plugin/aipaint/img2img.go | 4 +- plugin/bilibili/bilibili.go | 27 +- plugin/danbooru/main.go | 4 +- plugin/danbooru/tag.go | 4 +- plugin/fortune/fortune.go | 4 +- plugin/genshin/ys.go | 9 +- plugin/gif/context.go | 8 +- plugin/gif/gif.go | 489 +++++++++++++++++------------------ plugin/gif/logo.go | 10 +- plugin/gif/png.go | 257 +++++++++--------- plugin/guessmusic/main.go | 9 +- plugin/qqwife/command.go | 9 +- plugin/qqwife/favorSystem.go | 9 +- plugin/qzone/qzone.go | 9 +- plugin/scale/main.go | 7 +- plugin/score/sign_in.go | 14 +- plugin/wordle/wordle.go | 17 +- 20 files changed, 482 insertions(+), 465 deletions(-) diff --git a/go.mod b/go.mod index ff16ee24..2bbfa918 100644 --- a/go.mod +++ b/go.mod @@ -4,14 +4,15 @@ go 1.19 require ( github.com/Baidu-AIP/golang-sdk v1.1.1 - github.com/FloatTech/AnimeAPI v1.6.1-0.20230130095520-be357484e5a7 - github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68 - github.com/FloatTech/gg v1.1.0 - github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c + github.com/FloatTech/AnimeAPI v1.6.1-0.20230207081411-573533b18194 + github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d + github.com/FloatTech/gg v1.1.1 + github.com/FloatTech/imgfactory v0.2.1 + github.com/FloatTech/rendercard v0.0.9 github.com/FloatTech/sqlite v1.5.7 github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b github.com/FloatTech/zbpctrl v1.5.3-0.20230130095145-714ad318cd52 - github.com/FloatTech/zbputils v1.6.2-0.20230206130001-6b404926bf66 + github.com/FloatTech/zbputils v1.6.2-0.20230207081254-6cd17551aace github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 github.com/antchfx/htmlquery v1.2.5 @@ -36,7 +37,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/tidwall/gjson v1.14.4 github.com/wcharczuk/go-chart/v2 v2.1.0 - github.com/wdvxdr1123/ZeroBot v1.6.8 + github.com/wdvxdr1123/ZeroBot v1.6.9 gitlab.com/gomidi/midi/v2 v2.0.25 golang.org/x/image v0.3.0 golang.org/x/text v0.6.0 diff --git a/go.sum b/go.sum index c59415e5..18db9efa 100644 --- a/go.sum +++ b/go.sum @@ -2,22 +2,24 @@ github.com/Baidu-AIP/golang-sdk v1.1.1 h1:RQsAmgDSAkiq22I6n7XJ2t3afgzFeqjY46FGhv github.com/Baidu-AIP/golang-sdk v1.1.1/go.mod h1:bXnGw7xPeKt8aF7UCELKrV6UZ/46spItONK1RQBQj1Y= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/FloatTech/AnimeAPI v1.6.1-0.20230130095520-be357484e5a7 h1:4FCjcjcsjUSJzmuUi8u570SUnmYasZ98ugSRg2SIl18= -github.com/FloatTech/AnimeAPI v1.6.1-0.20230130095520-be357484e5a7/go.mod h1:LmHu358Oovtxhc/7xz+IfffUAMCX2bijpEvWatacEYQ= -github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68 h1:K03MRdjGBtoZ7QOnyeKf8dmxsRoNF7dN0udNrR5t138= -github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68/go.mod h1:OoZE4Ra7olpFaJSrlD6mcyT4chPLg9QBRE1pzTC8R84= -github.com/FloatTech/gg v1.1.0 h1:4qmsleYqRZ/gv48izGgkyJgvP1RmybA5xJJnzkhK/OU= -github.com/FloatTech/gg v1.1.0/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI= -github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c h1:nE1X4Z3BAyYydlo0QKVU/nUtEyF5ek/cN6S5sZsyio4= -github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c/go.mod h1:0LVxMhsw6LayHM78pJ58/TCkx0/CIVuYc19fCHpM/5g= +github.com/FloatTech/AnimeAPI v1.6.1-0.20230207081411-573533b18194 h1:+p85V0fdZNt3UoKreBeI6S3IOPvNmU5/Fnn39ipSkVk= +github.com/FloatTech/AnimeAPI v1.6.1-0.20230207081411-573533b18194/go.mod h1:LCiKZivPVazRRCnnADQfIBFZiIPHHCFqaCpwZWsFehI= +github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d h1:vVqMO5Kejt5pueuZvBxfX+psa7UwE110TpITf5eV7Zw= +github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d/go.mod h1:OoZE4Ra7olpFaJSrlD6mcyT4chPLg9QBRE1pzTC8R84= +github.com/FloatTech/gg v1.1.1 h1:pY6spOq9QMVSkL1rvrMx/dMIvtwtYZcyb9Phs7AA9Rc= +github.com/FloatTech/gg v1.1.1/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI= +github.com/FloatTech/imgfactory v0.2.1 h1:XoVwy0Xu0AvTRtzlhv5teZcuZlAcHrYjeQ8MynJ/zlk= +github.com/FloatTech/imgfactory v0.2.1/go.mod h1:QBJKHbzpE+x/9Wn7mXebWap/K/xUJSjgiaelAElwU9Q= +github.com/FloatTech/rendercard v0.0.9 h1:t4kKcVXfX6SZ/elzAIs8Q8X4Oc+fdtfFHQCeCR0xGqY= +github.com/FloatTech/rendercard v0.0.9/go.mod h1:mWOh29JXJqrHFts9ZgpYZCCYw+69yYQkP5dD5Fpxftg= github.com/FloatTech/sqlite v1.5.7 h1:Bvo4LSojcZ6dVtbHrkqvt6z4v8e+sj0G5PSUIvdawsk= github.com/FloatTech/sqlite v1.5.7/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/zbpctrl v1.5.3-0.20230130095145-714ad318cd52 h1:BrStRXeosWh8L0iA/EjPd8w6xNexDkqki39ITZko/9Q= github.com/FloatTech/zbpctrl v1.5.3-0.20230130095145-714ad318cd52/go.mod h1:qqMLUwR7tKpqnAqsgI7aZbn0hbs2FEVF4ylMXqIpBdY= -github.com/FloatTech/zbputils v1.6.2-0.20230206130001-6b404926bf66 h1:Flhj6lBRDQQnAkRML2pIJEwqSu1NjfS2Tzh0HncaC2Q= -github.com/FloatTech/zbputils v1.6.2-0.20230206130001-6b404926bf66/go.mod h1:cJiEzrjnkGlnw1oyL4wXmF64njoDN/jNV1Qm+Hu3B2o= +github.com/FloatTech/zbputils v1.6.2-0.20230207081254-6cd17551aace h1:0Q3C/ma/mfkOgBtHhG1ogAMl66YXK9VH3iwLZJC/IZA= +github.com/FloatTech/zbputils v1.6.2-0.20230207081254-6cd17551aace/go.mod h1:Ekq++wMLm0jy9YcdCvQ7JbpypyIL1GGCvLIxPbEwqlE= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e h1:wR3MXQ3VbUlPKOOUwLOYgh/QaJThBTYtsl673O3lqSA= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= @@ -196,8 +198,8 @@ github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYm github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= github.com/wcharczuk/go-chart/v2 v2.1.0 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I= github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= -github.com/wdvxdr1123/ZeroBot v1.6.8 h1:jdFhd6Bk0JBIKPpKhHnkACtjnIf4co6Hdw3U16e4Gi0= -github.com/wdvxdr1123/ZeroBot v1.6.8/go.mod h1:T5kD5vLi/YxL/fyDOCOaawi96LRBdJjcXh2CIjDyFfg= +github.com/wdvxdr1123/ZeroBot v1.6.9 h1:vaFqtIXpyeU60xEddg4EsN6cX6cpB3MKhLbe/MQ5OVw= +github.com/wdvxdr1123/ZeroBot v1.6.9/go.mod h1:T5kD5vLi/YxL/fyDOCOaawi96LRBdJjcXh2CIjDyFfg= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= diff --git a/plugin/ai_false/ai_false.go b/plugin/ai_false/ai_false.go index 914109eb..6ca30071 100644 --- a/plugin/ai_false/ai_false.go +++ b/plugin/ai_false/ai_false.go @@ -14,14 +14,13 @@ import ( "github.com/FloatTech/AnimeAPI/bilibili" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/rendercard" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" "github.com/disintegration/imaging" "github.com/shirou/gopsutil/v3/cpu" @@ -70,11 +69,14 @@ func init() { // 插件主体 ctx.SendChain(message.Text("ERROR: ", err)) return } - sendimg, cl := writer.ToBytes(img) + sendimg, err := imgfactory.ToBytes(img) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } if id := ctx.SendChain(message.ImageBytes(sendimg)); id.ID() == 0 { ctx.SendChain(message.Text("ERROR: 可能被风控了")) } - cl() }) engine.OnRegex(`^设置默认限速为每\s*(\d+)\s*(分钟|秒)\s*(\d+)\s*次触发$`, zero.SuperUserPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { @@ -153,7 +155,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg if err != nil { return } - avatarf := img.Size(avatar, 200, 200) + avatarf := imgfactory.Size(avatar, 200, 200) fontbyte, err := file.GetLazyData(text.GlowSansFontFile, control.Md5File, true) if err != nil { @@ -165,10 +167,10 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg bh, bw, ch, cw := float64(back.Bounds().Dy()), float64(back.Bounds().Dx()), float64(canvas.H()), float64(canvas.W()) if bh/bw < ch/cw { - back = img.Size(back, int(bw*ch/bh), int(bh*ch/bh)).Im + back = imgfactory.Size(back, int(bw*ch/bh), int(bh*ch/bh)).Image() canvas.DrawImageAnchored(back, canvas.W()/2, canvas.H()/2, 0.5, 0.5) } else { - back = img.Size(back, int(bw*cw/bw), int(bh*cw/bw)).Im + back = imgfactory.Size(back, int(bw*cw/bw), int(bh*cw/bw)).Image() canvas.DrawImage(back, 0, 0) } @@ -194,7 +196,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg titlecard.SetRGBA255(255, 255, 255, 140) titlecard.Fill() - titlecard.DrawImage(avatarf.Circle(0).Im, (titlecardh-avatarf.H)/2, (titlecardh-avatarf.H)/2) + titlecard.DrawImage(avatarf.Circle(0).Image(), (titlecardh-avatarf.H())/2, (titlecardh-avatarf.H())/2) err = titlecard.ParseFontFace(fontbyte, 72) if err != nil { diff --git a/plugin/aipaint/img2img.go b/plugin/aipaint/img2img.go index ffc1b153..75c48ba7 100644 --- a/plugin/aipaint/img2img.go +++ b/plugin/aipaint/img2img.go @@ -11,8 +11,8 @@ import ( "strings" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" @@ -73,7 +73,7 @@ func init() { // 插件主体 } // 图片转base64 - base64Bytes, err := writer.ToBase64(img) + base64Bytes, err := imgfactory.ToBase64(img) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/bilibili/bilibili.go b/plugin/bilibili/bilibili.go index 2c17b255..e0fc5409 100644 --- a/plugin/bilibili/bilibili.go +++ b/plugin/bilibili/bilibili.go @@ -19,12 +19,11 @@ import ( bz "github.com/FloatTech/AnimeAPI/bilibili" fcext "github.com/FloatTech/floatbox/ctxext" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" log "github.com/sirupsen/logrus" zero "github.com/wdvxdr1123/ZeroBot" @@ -174,7 +173,7 @@ func init() { ctx.SendChain(message.Text("ERROR: ", err)) return } - back = img.Size(back, backX, backY).Im + back = imgfactory.Size(back, backX, backY).Image() } if len(vups) > 50 { ctx.SendChain(message.Text(u.Name + "关注的up主太多了, 只展示前50个up")) @@ -259,12 +258,15 @@ func init() { f, err := os.Create(drawedFile) if err != nil { log.Errorln("[bilibili]", err) - data, cl := writer.ToBytes(canvas.Image()) + data, err := imgfactory.ToBytes(canvas.Image()) + if err != nil { + log.Errorln("[bilibili]", err) + return + } ctx.SendChain(message.ImageBytes(data)) - cl() return } - _, err = writer.WriteTo(canvas.Image(), f) + _, err = imgfactory.WriteTo(canvas.Image(), f) _ = f.Close() if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) @@ -318,7 +320,7 @@ func init() { ctx.SendChain(message.Text("ERROR: ", err)) return } - back = img.Size(back, backX, backY).Im + back = imgfactory.Size(back, backX, backY).Image() } canvas := gg.NewContext(100, 100) fontSize := 50.0 @@ -384,7 +386,7 @@ func init() { ctx.SendChain(message.Text("ERROR: ", err)) return } - back = img.Size(back, backX, backY).Im + back = imgfactory.Size(back, backX, backY).Image() } if back != nil { canvas.DrawImage(back, facestart, int(channelStart)) @@ -520,12 +522,15 @@ func init() { f, err := os.Create(drawedFile) if err != nil { log.Errorln("[bilibili]", err) - data, cl := writer.ToBytes(nim) + data, err := imgfactory.ToBytes(nim) + if err != nil { + log.Errorln("[bilibili]", err) + return + } ctx.SendChain(message.ImageBytes(data)) - cl() return } - _, err = writer.WriteTo(nim, f) + _, err = imgfactory.WriteTo(nim, f) _ = f.Close() if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) diff --git a/plugin/danbooru/main.go b/plugin/danbooru/main.go index c3db251c..bf9d947e 100644 --- a/plugin/danbooru/main.go +++ b/plugin/danbooru/main.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -39,7 +39,7 @@ func init() { // 插件主体 digest := md5.Sum(helper.StringToBytes(url)) f := cachefolder + hex.EncodeToString(digest[:]) if file.IsNotExist(f) { - _ = writer.SavePNG2Path(f, t) + _ = imgfactory.SavePNG2Path(f, t) } m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image("file:///"+file.BOTPATH+"/"+f))} m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Text("tags: ", strings.Join(st.tseq, ",")))) diff --git a/plugin/danbooru/tag.go b/plugin/danbooru/tag.go index 860b92d4..376f8d59 100644 --- a/plugin/danbooru/tag.go +++ b/plugin/danbooru/tag.go @@ -11,8 +11,8 @@ import ( "github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/web" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/zbputils/control" - imgutils "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" // jpg png gif _ "golang.org/x/image/webp" // webp ) @@ -94,7 +94,7 @@ func tagurl(name, u string) (im image.Image, st *sorttags, err error) { return } - img = imgutils.Limit(img, 1280, 720) + img = imgfactory.Limit(img, 1280, 720) canvas := gg.NewContext(img.Bounds().Size().X, img.Bounds().Size().Y+int(float64(img.Bounds().Size().X)*0.2)+len(tags)*img.Bounds().Size().X/25) canvas.SetRGB(1, 1, 1) diff --git a/plugin/fortune/fortune.go b/plugin/fortune/fortune.go index 8a7c7e35..1c79d9af 100644 --- a/plugin/fortune/fortune.go +++ b/plugin/fortune/fortune.go @@ -12,6 +12,7 @@ import ( "strconv" "github.com/FloatTech/gg" // 注册了 jpg png gif + "github.com/FloatTech/imgfactory" "github.com/sirupsen/logrus" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" @@ -19,7 +20,6 @@ import ( fcext "github.com/FloatTech/floatbox/ctxext" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/math" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" @@ -230,7 +230,7 @@ func draw(back image.Image, title, txt string, f io.Writer) (int64, error) { } } } - return writer.WriteTo(canvas.Image(), f) + return imgfactory.WriteTo(canvas.Image(), f) } func offest(total, now int, distance float64) float64 { diff --git a/plugin/genshin/ys.go b/plugin/genshin/ys.go index 0070e62d..63bd1bed 100644 --- a/plugin/genshin/ys.go +++ b/plugin/genshin/ys.go @@ -14,8 +14,8 @@ import ( "sync/atomic" fcext "github.com/FloatTech/floatbox/ctxext" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/process" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -100,7 +100,11 @@ func init() { ctx.SendChain(message.Text("ERROR: ", err)) return } - b, cl := writer.ToBytes(img) + b, err := imgfactory.ToBytes(img) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } if mode { ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text("恭喜你抽到了: \n", str), message.ImageBytes(b))) @@ -108,7 +112,6 @@ func init() { ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text("十连成功~"), message.ImageBytes(b))) } - cl() }) } diff --git a/plugin/gif/context.go b/plugin/gif/context.go index 1ecb9ebc..74613bc6 100644 --- a/plugin/gif/context.go +++ b/plugin/gif/context.go @@ -7,7 +7,7 @@ import ( "github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/web" - "github.com/FloatTech/zbputils/img" + "github.com/FloatTech/imgfactory" "github.com/sirupsen/logrus" ) @@ -97,10 +97,10 @@ func newContext(user int64) *context { return c } -func loadFirstFrames(paths []string, size int) (imgs []*img.Factory, err error) { - imgs = make([]*img.Factory, size) +func loadFirstFrames(paths []string, size int) (imgs []*imgfactory.Factory, err error) { + imgs = make([]*imgfactory.Factory, size) for i := range imgs { - imgs[i], err = img.LoadFirstFrame(paths[i], 0, 0) + imgs[i], err = imgfactory.LoadFirstFrame(paths[i], 0, 0) if err != nil { return nil, err } diff --git a/plugin/gif/gif.go b/plugin/gif/gif.go index e3b3b44d..385f4d2c 100644 --- a/plugin/gif/gif.go +++ b/plugin/gif/gif.go @@ -7,10 +7,9 @@ import ( "sync" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/zbputils/control" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" ) @@ -39,13 +38,13 @@ func mo(cc *context, value ...string) (string, error) { return "", err } mo := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 80, 80, 32, 32).Im, - imgs[1].InsertBottom(tou, 70, 90, 42, 22).Im, - imgs[2].InsertBottom(tou, 75, 85, 37, 27).Im, - imgs[3].InsertBottom(tou, 85, 75, 27, 37).Im, - imgs[4].InsertBottom(tou, 90, 70, 22, 42).Im, + imgs[0].InsertBottom(tou, 80, 80, 32, 32).Image(), + imgs[1].InsertBottom(tou, 70, 90, 42, 22).Image(), + imgs[2].InsertBottom(tou, 75, 85, 37, 27).Image(), + imgs[3].InsertBottom(tou, 85, 75, 27, 37).Image(), + imgs[4].InsertBottom(tou, 90, 70, 22, 42).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(1, mo)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, mo)) } // cuo 搓 @@ -64,10 +63,10 @@ func cuo(cc *context, value ...string) (string, error) { if err != nil { return "", err } - m1 := img.Rotate(tou, 72, 0, 0) - m2 := img.Rotate(tou, 144, 0, 0) - m3 := img.Rotate(tou, 216, 0, 0) - m4 := img.Rotate(tou, 288, 0, 0) + m1 := imgfactory.Rotate(tou, 72, 0, 0) + m2 := imgfactory.Rotate(tou, 144, 0, 0) + m3 := imgfactory.Rotate(tou, 216, 0, 0) + m4 := imgfactory.Rotate(tou, 288, 0, 0) wg.Wait() if errwg != nil { return "", errwg @@ -77,13 +76,13 @@ func cuo(cc *context, value ...string) (string, error) { return "", err } cuo := []*image.NRGBA{ - imgs[0].InsertBottomC(tou, 0, 0, 75, 130).Im, - imgs[1].InsertBottomC(m1.Im, 0, 0, 75, 130).Im, - imgs[2].InsertBottomC(m2.Im, 0, 0, 75, 130).Im, - imgs[3].InsertBottomC(m3.Im, 0, 0, 75, 130).Im, - imgs[4].InsertBottomC(m4.Im, 0, 0, 75, 130).Im, + imgs[0].InsertBottomC(tou, 0, 0, 75, 130).Image(), + imgs[1].InsertBottomC(m1.Image(), 0, 0, 75, 130).Image(), + imgs[2].InsertBottomC(m2.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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(5, cuo)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(5, cuo)) } // qiao 敲 @@ -111,10 +110,10 @@ func qiao(cc *context, value ...string) (string, error) { return "", err } qiao := []*image.NRGBA{ - imgs[0].InsertUp(tou, 40, 33, 57, 52).Im, - imgs[1].InsertUp(tou, 38, 36, 58, 50).Im, + imgs[0].InsertUp(tou, 40, 33, 57, 52).Image(), + imgs[1].InsertUp(tou, 38, 36, 58, 50).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(1, qiao)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, qiao)) } // chi 吃 @@ -142,11 +141,11 @@ func chi(cc *context, value ...string) (string, error) { return "", err } chi := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 0, 0, 1, 38).Im, - imgs[1].InsertBottom(tou, 0, 0, 1, 38).Im, - imgs[2].InsertBottom(tou, 0, 0, 1, 38).Im, + imgs[0].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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(1, chi)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, chi)) } // ceng 蹭 @@ -178,14 +177,14 @@ func ceng(cc *context, value ...string) (string, error) { return "", err } ceng := []*image.NRGBA{ - imgs[0].InsertUp(tou, 75, 77, 40, 88).InsertUp(tou2, 77, 103, 102, 81).Im, - imgs[1].InsertUp(tou, 75, 77, 46, 100).InsertUp(img.Rotate(tou2, 10, 62, 127).Im, 0, 0, 92, 40).Im, - imgs[2].InsertUp(tou, 75, 77, 67, 99).InsertUp(tou2, 76, 117, 90, 8).Im, - imgs[3].InsertUp(tou, 75, 77, 52, 83).InsertUp(img.Rotate(tou2, -40, 94, 94).Im, 0, 0, 53, -20).Im, - imgs[4].InsertUp(tou, 75, 77, 56, 110).InsertUp(img.Rotate(tou2, -66, 132, 80).Im, 0, 0, 78, 40).Im, - imgs[5].InsertUp(tou, 75, 77, 62, 102).InsertUp(tou2, 71, 100, 110, 94).Im, + imgs[0].InsertUp(tou, 75, 77, 40, 88).InsertUp(tou2, 77, 103, 102, 81).Image(), + imgs[1].InsertUp(tou, 75, 77, 46, 100).InsertUp(imgfactory.Rotate(tou2, 10, 62, 127).Image(), 0, 0, 92, 40).Image(), + imgs[2].InsertUp(tou, 75, 77, 67, 99).InsertUp(tou2, 76, 117, 90, 8).Image(), + imgs[3].InsertUp(tou, 75, 77, 52, 83).InsertUp(imgfactory.Rotate(tou2, -40, 94, 94).Image(), 0, 0, 53, -20).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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, ceng)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, ceng)) } // ken 啃 @@ -213,24 +212,24 @@ func ken(cc *context, value ...string) (string, error) { return "", err } ken := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 90, 90, 105, 150).Im, - imgs[1].InsertBottom(tou, 90, 83, 96, 172).Im, - imgs[2].InsertBottom(tou, 90, 90, 106, 148).Im, - imgs[3].InsertBottom(tou, 88, 88, 97, 167).Im, - imgs[4].InsertBottom(tou, 90, 85, 89, 179).Im, - imgs[5].InsertBottom(tou, 90, 90, 106, 151).Im, - imgs[6].Im, - imgs[7].Im, - imgs[8].Im, - imgs[9].Im, - imgs[10].Im, - imgs[11].Im, - imgs[12].Im, - imgs[13].Im, - imgs[14].Im, - imgs[15].Im, + imgs[0].InsertBottom(tou, 90, 90, 105, 150).Image(), + imgs[1].InsertBottom(tou, 90, 83, 96, 172).Image(), + imgs[2].InsertBottom(tou, 90, 90, 106, 148).Image(), + imgs[3].InsertBottom(tou, 88, 88, 97, 167).Image(), + imgs[4].InsertBottom(tou, 90, 85, 89, 179).Image(), + imgs[5].InsertBottom(tou, 90, 90, 106, 151).Image(), + imgs[6].Image(), + imgs[7].Image(), + imgs[8].Image(), + imgs[9].Image(), + imgs[10].Image(), + imgs[11].Image(), + imgs[12].Image(), + imgs[13].Image(), + imgs[14].Image(), + imgs[15].Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ken)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ken)) } // pai 拍 @@ -258,10 +257,10 @@ func pai(cc *context, value ...string) (string, error) { return "", err } pai := []*image.NRGBA{ - imgs[0].InsertUp(tou, 0, 0, 1, 47).Im, - imgs[1].InsertUp(tou, 0, 0, 1, 67).Im, + imgs[0].InsertUp(tou, 0, 0, 1, 47).Image(), + imgs[1].InsertUp(tou, 0, 0, 1, 67).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(1, pai)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, pai)) } // xqe 冲 @@ -289,10 +288,10 @@ func xqe(cc *context, value ...string) (string, error) { return "", err } chong := []*image.NRGBA{ - imgs[0].InsertUp(tou, 30, 30, 15, 53).Im, - imgs[1].InsertUp(tou, 30, 30, 40, 53).Im, + imgs[0].InsertUp(tou, 30, 30, 15, 53).Image(), + imgs[1].InsertUp(tou, 30, 30, 40, 53).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(1, chong)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(1, chong)) } // diu 丢 @@ -320,16 +319,16 @@ func diu(cc *context, value ...string) (string, error) { return "", err } diu := []*image.NRGBA{ - imgs[0].InsertUp(tou, 32, 32, 108, 36).Im, - imgs[1].InsertUp(tou, 32, 32, 122, 36).Im, - imgs[2].Im, - imgs[3].InsertUp(tou, 123, 123, 19, 129).Im, - imgs[4].InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Im, - imgs[5].InsertUp(tou, 32, 32, 280, 73).Im, - imgs[6].InsertUp(tou, 35, 35, 259, 31).Im, - imgs[7].InsertUp(tou, 175, 175, -50, 220).Im, + imgs[0].InsertUp(tou, 32, 32, 108, 36).Image(), + imgs[1].InsertUp(tou, 32, 32, 122, 36).Image(), + imgs[2].Image(), + imgs[3].InsertUp(tou, 123, 123, 19, 129).Image(), + imgs[4].InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Image(), + imgs[5].InsertUp(tou, 32, 32, 280, 73).Image(), + imgs[6].InsertUp(tou, 35, 35, 259, 31).Image(), + imgs[7].InsertUp(tou, 175, 175, -50, 220).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, diu)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, diu)) } // kiss 亲 @@ -366,9 +365,9 @@ func kiss(cc *context, value ...string) (string, error) { kiss := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { kiss[i] = imgs[i].InsertUp(tou, 50, 50, userLocs[i][0], userLocs[i][1]). - InsertUp(tou2, 40, 40, selfLocs[i][0], selfLocs[i][1]).Im + InsertUp(tou2, 40, 40, selfLocs[i][0], selfLocs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, kiss)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, kiss)) } // garbage 垃圾 垃圾桶 @@ -388,7 +387,7 @@ func garbage(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 79, 79) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 79, 79) if err != nil { return "", err } @@ -399,9 +398,9 @@ func garbage(cc *context, value ...string) (string, error) { } garbage := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - garbage[i] = imgs[i].InsertBottom(im.Im, 0, 0, locs[i][0], locs[i][1]).Im + garbage[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, garbage)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, garbage)) } // thump 捶 @@ -421,7 +420,7 @@ func thump(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -432,9 +431,9 @@ func thump(cc *context, value ...string) (string, error) { } thump := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - thump[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + thump[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, thump)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, thump)) } // jiujiu 啾啾 @@ -454,7 +453,7 @@ func jiujiu(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 75, 51) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 75, 51) if err != nil { return "", err } @@ -464,9 +463,9 @@ func jiujiu(cc *context, value ...string) (string, error) { } jiujiu := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - jiujiu[i] = imgs[i].InsertBottom(im.Im, 0, 0, 0, 0).Im + jiujiu[i] = imgs[i].InsertBottom(im.Image(), 0, 0, 0, 0).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, jiujiu)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, jiujiu)) } // knock 2敲 @@ -486,7 +485,7 @@ func knock(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -497,9 +496,9 @@ func knock(cc *context, value ...string) (string, error) { } knock := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - knock[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + knock[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, knock)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, knock)) } // 听音乐 listenMusic @@ -529,9 +528,9 @@ func listenMusic(cc *context, value ...string) (string, error) { } listenmusic := make([]*image.NRGBA, 36) for i := 0; i < 36; i++ { - listenmusic[i] = imgs[0].InsertBottomC(img.Rotate(face, float64(-i*10), 215, 215).Im, 0, 0, 207, 207).Im + listenmusic[i] = imgs[0].InsertBottomC(imgfactory.Rotate(face, float64(-i*10), 215, 215).Image(), 0, 0, 207, 207).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, listenmusic)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, listenmusic)) } // loveYou 永远爱你 @@ -551,7 +550,7 @@ func loveYou(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -562,9 +561,9 @@ func loveYou(cc *context, value ...string) (string, error) { } loveyou := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - loveyou[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + loveyou[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, loveyou)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, loveyou)) } // pat 2拍 @@ -584,7 +583,7 @@ func pat(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -596,9 +595,9 @@ func pat(cc *context, value ...string) (string, error) { p := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { if i == 2 { - p[i] = imgs[i].InsertBottom(im.Im, locs[1][2], locs[1][3], locs[1][0], locs[1][1]).Im + p[i] = imgs[i].InsertBottom(im.Image(), locs[1][2], locs[1][3], locs[1][0], locs[1][1]).Image() } else { - p[i] = imgs[i].InsertBottom(im.Im, locs[0][2], locs[0][3], locs[0][0], locs[0][1]).Im + p[i] = imgs[i].InsertBottom(im.Image(), locs[0][2], locs[0][3], locs[0][0], locs[0][1]).Image() } } seq := []int{0, 1, 2, 3, 1, 2, 3, 0, 1, 2, 3, 0, 0, 1, 2, 3, 0, 0, 0, 0, 4, 5, 5, 5, 6, 7, 8, 9} @@ -606,7 +605,7 @@ func pat(cc *context, value ...string) (string, error) { for i := 0; i < len(pat); i++ { pat[i] = p[seq[i]] } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, pat)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, pat)) } // jackUp 顶 @@ -626,7 +625,7 @@ func jackUp(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -638,9 +637,9 @@ func jackUp(cc *context, value ...string) (string, error) { p := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { if i < len(locs) { - p[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + p[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } else { - p[i] = imgs[i].Im + p[i] = imgs[i].Image() } } play := make([]*image.NRGBA, 0, 16) @@ -649,7 +648,7 @@ func jackUp(cc *context, value ...string) (string, error) { play = append(play, p[0:8]...) play = append(play, p[12:18]...) play = append(play, p[18:23]...) - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, play)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, play)) } // pound 捣 @@ -669,7 +668,7 @@ func pound(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -680,9 +679,9 @@ func pound(cc *context, value ...string) (string, error) { } pound := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - pound[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + pound[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, pound)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, pound)) } // punch 打拳 @@ -702,7 +701,7 @@ func punch(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 260, 260) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 260, 260) if err != nil { return "", err } @@ -713,9 +712,9 @@ func punch(cc *context, value ...string) (string, error) { } punch := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - punch[i] = imgs[i].InsertBottom(im.Im, 0, 0, locs[i][0], locs[i][1]-15).Im + punch[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]-15).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, punch)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, punch)) } // roll 滚 @@ -735,7 +734,7 @@ func roll(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 210, 210) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 210, 210) if err != nil { return "", err } @@ -746,9 +745,9 @@ func roll(cc *context, value ...string) (string, error) { } roll := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - roll[i] = imgs[i].InsertBottomC(img.Rotate(im.Im, float64(locs[i][2]), 0, 0).Im, 0, 0, locs[i][0]+105, locs[i][1]+105).Im + 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, writer.SaveGIF2Path(name, img.MergeGif(7, roll)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, roll)) } // suck 吸 嗦 @@ -768,7 +767,7 @@ func suck(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -779,9 +778,9 @@ func suck(cc *context, value ...string) (string, error) { } suck := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - suck[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + suck[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, suck)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, suck)) } // hammer 锤 @@ -801,7 +800,7 @@ func hammer(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -812,9 +811,9 @@ func hammer(cc *context, value ...string) (string, error) { } hammer := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - hammer[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + hammer[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, hammer)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, hammer)) } // tightly 紧贴 紧紧贴着 @@ -834,7 +833,7 @@ func tightly(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -845,9 +844,9 @@ func tightly(cc *context, value ...string) (string, error) { } tightly := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - tightly[i] = imgs[i].InsertBottom(im.Im, locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Im + tightly[i] = imgs[i].InsertBottom(im.Image(), locs[i][2], locs[i][3], locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, tightly)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, tightly)) } // turn 转 @@ -864,9 +863,9 @@ func turn(cc *context, value ...string) (string, error) { canvas.Fill() turn := make([]*image.NRGBA, 36) for i := 0; i < 36; i++ { - turn[i] = img.Size(canvas.Image(), 0, 0).InsertUpC(img.Rotate(face, float64(10*i), 250, 250).Im, 0, 0, 125, 125).Im + 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, writer.SaveGIF2Path(name, img.MergeGif(7, turn)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, turn)) } // taiguan 抬棺 @@ -894,28 +893,28 @@ func taiguan(cc *context, value ...string) (string, error) { return "", err } taiguan := []*image.NRGBA{ - imgs[0].InsertUp(tou, 85, 85, 180, 65).Im, - imgs[1].InsertUp(tou, 85, 85, 180, 65).Im, - imgs[2].InsertUp(tou, 85, 85, 180, 65).Im, - imgs[3].InsertUp(tou, 85, 85, 180, 65).Im, - imgs[4].InsertUp(tou, 85, 85, 177, 65).Im, - imgs[5].InsertUp(tou, 85, 85, 175, 65).Im, - imgs[6].InsertUp(tou, 85, 85, 173, 65).Im, - imgs[7].InsertUp(tou, 85, 85, 171, 65).Im, - imgs[8].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[9].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[10].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[11].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[12].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[13].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[14].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[15].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[16].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[17].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[18].InsertUp(tou, 85, 85, 170, 65).Im, - imgs[19].InsertUp(tou, 85, 85, 175, 65).Im, + imgs[0].InsertUp(tou, 85, 85, 180, 65).Image(), + imgs[1].InsertUp(tou, 85, 85, 180, 65).Image(), + imgs[2].InsertUp(tou, 85, 85, 180, 65).Image(), + imgs[3].InsertUp(tou, 85, 85, 180, 65).Image(), + imgs[4].InsertUp(tou, 85, 85, 177, 65).Image(), + imgs[5].InsertUp(tou, 85, 85, 175, 65).Image(), + imgs[6].InsertUp(tou, 85, 85, 173, 65).Image(), + imgs[7].InsertUp(tou, 85, 85, 171, 65).Image(), + imgs[8].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[9].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[10].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[11].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[12].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[13].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[14].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[15].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[16].InsertUp(tou, 85, 85, 170, 65).Image(), + imgs[17].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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, taiguan)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, taiguan)) } // zou 揍 @@ -947,11 +946,11 @@ func zou(cc *context, value ...string) (string, error) { return "", err } zou := []*image.NRGBA{ - imgs[0].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 100, 45).Im, - imgs[1].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 101, 45).Im, - imgs[2].InsertUp(tou, 40, 40, 89, 140).InsertUp(tou2, 55, 55, 99, 40).Im, + imgs[0].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 100, 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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, zou)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, zou)) } // ci 吞 @@ -979,34 +978,34 @@ func ci(cc *context, value ...string) (string, error) { return "", err } ci := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 25, 25, 25, 57).Im, - imgs[1].InsertBottom(tou, 25, 25, 27, 58).Im, - imgs[2].InsertBottom(tou, 25, 25, 28, 57).Im, - imgs[3].InsertBottom(tou, 25, 25, 30, 57).Im, - imgs[4].InsertBottom(tou, 25, 25, 30, 58).Im, - imgs[5].InsertBottom(tou, 25, 25, 30, 59).Im, - imgs[6].Im, - imgs[7].Im, - imgs[8].Im, - imgs[9].Im, - imgs[10].Im, - imgs[11].Im, - imgs[12].Im, - imgs[13].Im, - imgs[14].Im, - imgs[15].Im, - imgs[16].Im, - imgs[17].Im, - imgs[18].Im, - imgs[19].Im, - imgs[20].Im, - imgs[21].Im, - imgs[22].Im, - imgs[23].Im, - imgs[24].Im, - imgs[25].Im, + imgs[0].InsertBottom(tou, 25, 25, 25, 57).Image(), + imgs[1].InsertBottom(tou, 25, 25, 27, 58).Image(), + imgs[2].InsertBottom(tou, 25, 25, 28, 57).Image(), + imgs[3].InsertBottom(tou, 25, 25, 30, 57).Image(), + imgs[4].InsertBottom(tou, 25, 25, 30, 58).Image(), + imgs[5].InsertBottom(tou, 25, 25, 30, 59).Image(), + imgs[6].Image(), + imgs[7].Image(), + imgs[8].Image(), + imgs[9].Image(), + imgs[10].Image(), + imgs[11].Image(), + imgs[12].Image(), + imgs[13].Image(), + imgs[14].Image(), + imgs[15].Image(), + imgs[16].Image(), + imgs[17].Image(), + imgs[18].Image(), + imgs[19].Image(), + imgs[20].Image(), + imgs[21].Image(), + imgs[22].Image(), + imgs[23].Image(), + imgs[24].Image(), + imgs[25].Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ci)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ci)) } // worship 膜拜 @@ -1034,17 +1033,17 @@ func worship(cc *context, value ...string) (string, error) { return "", err } worship := []*image.NRGBA{ - imgs[0].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[1].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[2].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[3].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[4].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[5].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[6].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[7].InsertBottom(face, 140, 140, 0, 0).Im, - imgs[8].InsertBottom(face, 140, 140, 0, 0).Im, + imgs[0].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[1].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[2].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[3].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[4].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[5].InsertBottom(face, 140, 140, 0, 0).Image(), + imgs[6].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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, worship)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, worship)) } // 2ceng 2蹭 @@ -1072,12 +1071,12 @@ func ceng2(cc *context, value ...string) (string, error) { return "", err } ceng2 := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 175, 175, 78, 263).Im, - imgs[1].InsertBottom(tou, 175, 175, 78, 263).Im, - imgs[2].InsertBottom(tou, 175, 175, 78, 263).Im, - imgs[3].InsertBottom(tou, 175, 175, 78, 263).Im, + imgs[0].InsertBottom(tou, 175, 175, 78, 263).Image(), + imgs[1].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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ceng2)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ceng2)) } // dun 炖 @@ -1105,13 +1104,13 @@ func dun(cc *context, value ...string) (string, error) { return "", err } dun := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 80, 80, 85, 45).Im, - imgs[1].InsertBottom(tou, 80, 80, 85, 45).Im, - imgs[2].InsertBottom(tou, 80, 80, 85, 45).Im, - imgs[3].InsertBottom(tou, 80, 80, 85, 45).Im, - imgs[4].InsertBottom(tou, 80, 80, 85, 45).Im, + imgs[0].InsertBottom(tou, 80, 80, 85, 45).Image(), + imgs[1].InsertBottom(tou, 80, 80, 85, 45).Image(), + imgs[2].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(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, dun)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, dun)) } // push 滚高清重置版 过渡 @@ -1141,9 +1140,9 @@ func push(cc *context, value ...string) (string, error) { } push := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - push[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-22*i), 280, 280).Im, 0, 0, 523, 291).Im + push[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-22*i), 280, 280).Image(), 0, 0, 523, 291).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, push)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, push)) } // peng 砰 @@ -1162,10 +1161,10 @@ func peng(cc *context, value ...string) (string, error) { if err != nil { return "", err } - m1 := img.Rotate(tou, 1, 80, 80) - m2 := img.Rotate(tou, 30, 80, 80) - m3 := img.Rotate(tou, 45, 85, 85) - m4 := img.Rotate(tou, 90, 80, 80) + m1 := imgfactory.Rotate(tou, 1, 80, 80) + m2 := imgfactory.Rotate(tou, 30, 80, 80) + m3 := imgfactory.Rotate(tou, 45, 85, 85) + m4 := imgfactory.Rotate(tou, 90, 80, 80) wg.Wait() if errwg != nil { return "", errwg @@ -1175,33 +1174,33 @@ func peng(cc *context, value ...string) (string, error) { return "", err } peng := []*image.NRGBA{ - imgs[0].Im, - imgs[1].Im, - imgs[2].Im, - imgs[3].Im, - imgs[4].Im, - imgs[5].Im, - imgs[6].Im, - imgs[7].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[8].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[9].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[10].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[11].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[12].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[13].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[14].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[15].InsertUp(m1.Im, 0, 0, 205, 80).Im, - imgs[16].InsertUp(m1.Im, 0, 0, 200, 80).Im, - imgs[17].InsertUp(m2.Im, 0, 0, 169, 65).Im, - imgs[18].InsertUp(m2.Im, 0, 0, 160, 69).Im, - imgs[19].InsertUp(m3.Im, 0, 0, 113, 90).Im, - imgs[20].InsertUp(m4.Im, 0, 0, 89, 159).Im, - imgs[21].InsertUp(m4.Im, 0, 0, 89, 159).Im, - imgs[22].InsertUp(m4.Im, 0, 0, 86, 160).Im, - imgs[23].InsertUp(m4.Im, 0, 0, 89, 159).Im, - imgs[24].InsertUp(m4.Im, 0, 0, 86, 160).Im, + imgs[0].Image(), + imgs[1].Image(), + imgs[2].Image(), + imgs[3].Image(), + imgs[4].Image(), + imgs[5].Image(), + imgs[6].Image(), + imgs[7].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[8].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[9].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[10].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[11].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[12].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[13].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[14].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[15].InsertUp(m1.Image(), 0, 0, 205, 80).Image(), + imgs[16].InsertUp(m1.Image(), 0, 0, 200, 80).Image(), + imgs[17].InsertUp(m2.Image(), 0, 0, 169, 65).Image(), + imgs[18].InsertUp(m2.Image(), 0, 0, 160, 69).Image(), + imgs[19].InsertUp(m3.Image(), 0, 0, 113, 90).Image(), + imgs[20].InsertUp(m4.Image(), 0, 0, 89, 159).Image(), + imgs[21].InsertUp(m4.Image(), 0, 0, 89, 159).Image(), + imgs[22].InsertUp(m4.Image(), 0, 0, 86, 160).Image(), + imgs[23].InsertUp(m4.Image(), 0, 0, 89, 159).Image(), + imgs[24].InsertUp(m4.Image(), 0, 0, 86, 160).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, peng)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, peng)) } // klee 可莉吃 @@ -1221,7 +1220,7 @@ func klee(cc *context, value ...string) (string, error) { if err != nil { return "", err } - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 82, 83) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 82, 83) if err != nil { return "", err } @@ -1232,9 +1231,9 @@ func klee(cc *context, value ...string) (string, error) { } klee := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - klee[i] = imgs[i].InsertBottom(im.Im, 0, 0, locs[i][0], locs[i][1]).Im + klee[i] = imgs[i].InsertBottom(im.Image(), 0, 0, locs[i][0], locs[i][1]).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, klee)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, klee)) } // hutaoken 胡桃啃 @@ -1262,10 +1261,10 @@ func hutaoken(cc *context, value ...string) (string, error) { return "", err } hutaoken := []*image.NRGBA{ - imgs[0].InsertBottom(tou, 98, 101, 108, 234).Im, - imgs[1].InsertBottom(tou, 96, 100, 108, 237).Im, + imgs[0].InsertBottom(tou, 98, 101, 108, 234).Image(), + imgs[1].InsertBottom(tou, 96, 100, 108, 237).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, hutaoken)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, hutaoken)) } // lick 2舔 @@ -1293,10 +1292,10 @@ func lick(cc *context, value ...string) (string, error) { return "", err } lick := []*image.NRGBA{ - imgs[0].InsertUp(tou, 44, 44, 10, 138).Im, - imgs[1].InsertUp(tou, 44, 44, 10, 138).Im, + imgs[0].InsertUp(tou, 44, 44, 10, 138).Image(), + imgs[1].InsertUp(tou, 44, 44, 10, 138).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, lick)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, lick)) } // tiqiu 踢球 @@ -1327,9 +1326,9 @@ func tiqiu(cc *context, value ...string) (string, error) { } tiqiu := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - tiqiu[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-24*i), 0, 0).Im, 0, 0, locs[i][0]+38, locs[i][1]+38).Im + 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, writer.SaveGIF2Path(name, img.MergeGif(7, tiqiu)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, tiqiu)) } // cai 踩 @@ -1356,15 +1355,15 @@ func cai(cc *context, value ...string) (string, error) { if err != nil { return "", err } - m1 := img.Rotate(tou, -20, 130, 80) + m1 := imgfactory.Rotate(tou, -20, 130, 80) cai := []*image.NRGBA{ - imgs[0].InsertBottom(m1.Im, 123, 105, 39, 188).Im, - imgs[1].InsertBottom(m1.Im, 123, 105, 39, 188).Im, - imgs[2].InsertBottom(tou, 90, 71, 50, 209).Im, - imgs[3].InsertBottom(tou, 85, 76, 52, 203).Im, - imgs[4].InsertBottom(tou, 88, 82, 49, 198).Im, + imgs[0].InsertBottom(m1.Image(), 123, 105, 39, 188).Image(), + imgs[1].InsertBottom(m1.Image(), 123, 105, 39, 188).Image(), + imgs[2].InsertBottom(tou, 90, 71, 50, 209).Image(), + imgs[3].InsertBottom(tou, 85, 76, 52, 203).Image(), + imgs[4].InsertBottom(tou, 88, 82, 49, 198).Image(), } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, cai)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, cai)) } // whir 2转 @@ -1394,26 +1393,26 @@ func whirl(cc *context, value ...string) (string, error) { } whirl := make([]*image.NRGBA, piclen) for i := 0; i < piclen; i++ { - whirl[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-24*i), 145, 145).Im, 0, 0, 115, 89).Im + whirl[i] = imgs[i].InsertUpC(imgfactory.Rotate(tou, float64(-24*i), 145, 145).Image(), 0, 0, 115, 89).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, whirl)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, whirl)) } // always 一直 func alwaysDoGif(cc *context, value ...string) (string, error) { _ = value var err error - var face []*image.NRGBA + var face []*imgfactory.Factory name := cc.usrdir + "AlwaysDo.gif" - face, err = img.LoadAllFrames(cc.headimgsdir[0], 500, 500) + face, err = imgfactory.LoadAllFrames(cc.headimgsdir[0], 500, 500) if err != nil { // 载入失败尝试载入第一帧 - face = make([]*image.NRGBA, 0) - first, err := img.LoadFirstFrame(cc.headimgsdir[0], 500, 500) + face = nil + first, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 500, 500) if err != nil { return "", err } - face = append(face, first.Im) + face = append(face, imgfactory.NewFactory(first.Image())) } canvas := gg.NewContext(500, 600) canvas.SetColor(color.Black) @@ -1437,13 +1436,13 @@ func alwaysDoGif(cc *context, value ...string) (string, error) { turn := make([]*image.NRGBA, length) for i, f := range face { canvas := gg.NewContext(500, 600) - canvas.DrawImage(f, 0, 0) + canvas.DrawImage(f.Image(), 0, 0) canvas.SetColor(color.Black) _ = canvas.LoadFontFace(text.BoldFontFile, 40) canvas.DrawString(arg, 280-l, 560) - canvas.DrawImage(img.Size(f, 90, 90).Im, 280, 505) + canvas.DrawImage(imgfactory.Size(f.Image(), 90, 90).Image(), 280, 505) canvas.DrawString("吗", 370, 560) - turn[i] = img.Size(canvas.Image(), 0, 0).Im + turn[i] = imgfactory.Size(canvas.Image(), 0, 0).Image() } - return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, turn)) + return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(8, turn)) } diff --git a/plugin/gif/logo.go b/plugin/gif/logo.go index 9599a43a..3d787260 100644 --- a/plugin/gif/logo.go +++ b/plugin/gif/logo.go @@ -7,7 +7,7 @@ import ( "github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/process" - "github.com/FloatTech/zbputils/img" + "github.com/FloatTech/imgfactory" ) func (cc *context) prepareLogos(s ...string) error { @@ -27,17 +27,17 @@ func (cc *context) prepareLogos(s ...string) error { } func (cc *context) getLogo(w int, h int) (*image.NRGBA, error) { - frame, err := img.LoadFirstFrame(cc.headimgsdir[0], w, h) + frame, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], w, h) if err != nil { return nil, err } - return frame.Circle(0).Im, nil + return frame.Circle(0).Image(), nil } func (cc *context) getLogo2(w int, h int) (*image.NRGBA, error) { - frame, err := img.LoadFirstFrame(cc.headimgsdir[1], w, h) + frame, err := imgfactory.LoadFirstFrame(cc.headimgsdir[1], w, h) if err != nil { return nil, err } - return frame.Circle(0).Im, nil + return frame.Circle(0).Image(), nil } diff --git a/plugin/gif/png.go b/plugin/gif/png.go index 91f700cb..1ee545be 100644 --- a/plugin/gif/png.go +++ b/plugin/gif/png.go @@ -9,10 +9,9 @@ import ( "sync" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/zbputils/control" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" ) @@ -36,11 +35,11 @@ func pa(cc *context, args ...string) (string, error) { if err != nil { return "", err } - imgf, err := img.LoadFirstFrame(f, 0, 0) + imgf, err := imgfactory.LoadFirstFrame(f, 0, 0) if err != nil { return "", err } - return "file:///" + name, writer.SavePNG2Path(name, imgf.InsertUp(tou, 100, 100, 0, 400).Im) + return "file:///" + name, imgfactory.SavePNG2Path(name, imgf.InsertUp(tou, 100, 100, 0, 400).Image()) } // si 撕 @@ -51,8 +50,8 @@ func si(cc *context, args ...string) (string, error) { if err != nil { return "", err } - im1 := img.Rotate(tou, 20, 380, 380) - im2 := img.Rotate(tou, -12, 380, 380) + im1 := imgfactory.Rotate(tou, 20, 380, 380) + im2 := imgfactory.Rotate(tou, -12, 380, 380) if file.IsNotExist(datapath + "materials/si") { err = os.MkdirAll(datapath+"materials/si", 0755) if err != nil { @@ -63,11 +62,11 @@ func si(cc *context, args ...string) (string, error) { if err != nil { return "", err } - imgf, err := img.LoadFirstFrame(f, 0, 0) + imgf, err := imgfactory.LoadFirstFrame(f, 0, 0) if err != nil { return "", err } - return "file:///" + name, writer.SavePNG2Path(name, imgf.InsertBottom(im1.Im, im1.W, im1.H, -3, 370).InsertBottom(im2.Im, im2.W, im2.H, 653, 310).Im) + return "file:///" + name, imgfactory.SavePNG2Path(name, imgf.InsertBottom(im1.Image(), im1.W(), im1.H(), -3, 370).InsertBottom(im2.Image(), im2.W(), im2.H(), 653, 310).Image()) } // flipV 上翻,下翻 @@ -75,12 +74,12 @@ func flipV(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "FlipV.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.FlipV().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.FlipV().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // flipH 左翻,右翻 @@ -88,12 +87,12 @@ func flipH(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "FlipH.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.FlipH().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.FlipH().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // invert 反色 @@ -101,12 +100,12 @@ func invert(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "Invert.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.Invert().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.Invert().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // blur 反色 @@ -114,12 +113,12 @@ func blur(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "Blur.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.Blur(10).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.Blur(10).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // grayscale 灰度 @@ -127,12 +126,12 @@ func grayscale(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "Grayscale.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.Grayscale().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.Grayscale().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // invertAndGrayscale 负片 @@ -140,12 +139,12 @@ func invertAndGrayscale(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "InvertAndGrayscale.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.Invert().Grayscale().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.Invert().Grayscale().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // convolve3x3 浮雕 @@ -153,32 +152,32 @@ func convolve3x3(cc *context, args ...string) (string, error) { _ = args name := cc.usrdir + "Convolve3x3.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } - imgnrgba := im.Convolve3x3().Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.Relief().Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // rotate 旋转 func rotate(cc *context, args ...string) (string, error) { name := cc.usrdir + "Rotate.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } r, _ := strconv.ParseFloat(args[0], 64) - imgnrgba := img.Rotate(im.Im, r, 0, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgfactory.Rotate(im.Image(), r, 0, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // deformation 变形 func deformation(cc *context, args ...string) (string, error) { name := cc.usrdir + "Deformation.png" // 加载图片 - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0) if err != nil { return "", err } @@ -190,8 +189,8 @@ func deformation(cc *context, args ...string) (string, error) { if err != nil { return "", err } - imgnrgba := img.Size(im.Im, w, h).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgfactory.Size(im.Image(), w, h).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // alike 你像个xxx一样 @@ -214,12 +213,12 @@ func alike(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Anyasuki.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 82, 69) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 82, 69) if err != nil { return "", err } - imgnrgba := imgs[0].InsertUp(im.Im, 0, 0, 136, 21).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertUp(im.Image(), 0, 0, 136, 21).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // marriage @@ -242,12 +241,12 @@ func marriage(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Marriage.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 1080, 1080) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 1080, 1080) if err != nil { return "", err } - imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).InsertUp(imgs[1].Im, 0, 0, 800, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).InsertUp(imgs[1].Image(), 0, 0, 800, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // anyasuki 阿尼亚喜欢 @@ -275,7 +274,7 @@ func anyasuki(cc *context, args ...string) (string, error) { return "", err } canvas := gg.NewContext(475, 540) - canvas.DrawImage(img.Size(face, 347, 267).Im, 82, 53) + canvas.DrawImage(imgfactory.Size(face, 347, 267).Image(), 82, 53) canvas.DrawImage(back, 0, 0) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) @@ -322,7 +321,7 @@ func alwaysLike(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(830, 599) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(face, 380, 380).Im, 44, 74) + canvas.DrawImage(imgfactory.Size(face, 380, 380).Image(), 44, 74) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -363,12 +362,12 @@ func decentKiss(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "DecentKiss.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 589, 577) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 589, 577) if err != nil { return "", err } - imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // chinaFlag 国旗 @@ -391,12 +390,12 @@ func chinaFlag(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "ChinaFlag.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 410, 410) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 410, 410) if err != nil { return "", err } - imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // dontTouch 不要靠近 @@ -419,12 +418,12 @@ func dontTouch(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "DontTouch.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 410, 410) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 410, 410) if err != nil { return "", err } - imgnrgba := imgs[0].InsertUp(im.Im, 148, 148, 46, 238).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertUp(im.Image(), 148, 148, 46, 238).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // universal 万能表情 空白表情 @@ -436,7 +435,7 @@ func universal(cc *context, args ...string) (string, error) { return "", err } canvas := gg.NewContext(500, 550) - canvas.DrawImage(img.Size(face, 500, 500).Im, 0, 0) + canvas.DrawImage(imgfactory.Size(face, 500, 500).Image(), 0, 0) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -485,7 +484,7 @@ func interview(cc *context, args ...string) (string, error) { return "", err } canvas := gg.NewContext(600, 300) - canvas.DrawImage(img.Size(face, 124, 124).Im, 100, 50) + canvas.DrawImage(imgfactory.Size(face, 124, 124).Image(), 100, 50) canvas.DrawImage(huaji, 376, 50) canvas.DrawImage(microphone, 300, 50) canvas.SetColor(color.Black) @@ -527,12 +526,12 @@ func need(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Need.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 114, 114) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 114, 114) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 327, 232).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 327, 232).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // paint 这像画吗 @@ -555,12 +554,12 @@ func paint(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Paint.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 117, 135) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 117, 135) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 4, 0, 0).Im, 0, 0, 95, 107).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 4, 0, 0).Image(), 0, 0, 95, 107).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // painter 小画家 @@ -583,12 +582,12 @@ func painter(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Painter.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 240, 345) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 240, 345) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 125, 91).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 125, 91).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // perfect 完美 @@ -611,12 +610,12 @@ func perfect(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Perfect.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 310, 460) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 310, 460) if err != nil { return "", err } - imgnrgba := imgs[0].InsertUp(im.Im, 0, 0, 313, 64).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertUp(im.Image(), 0, 0, 313, 64).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // playGame 玩游戏 @@ -644,7 +643,7 @@ func playGame(cc *context, args ...string) (string, error) { return "", err } canvas := gg.NewContext(526, 503) - canvas.DrawImage(img.Rotate(face, 10, 225, 160).Im, 161, 117) + canvas.DrawImage(imgfactory.Rotate(face, 10, 225, 160).Image(), 161, 117) canvas.DrawImage(back, 0, 0) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) @@ -685,12 +684,12 @@ func police(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Police.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 245, 245) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 245, 245) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 224, 46).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 224, 46).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // police1 警察 @@ -713,12 +712,12 @@ func police1(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Police1.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 60, 75) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 60, 75) if err != nil { return "", err } - imgnrgba := imgs[1].InsertBottom(img.Rotate(im.Im, 16, 0, 0).Im, 0, 0, 37, 291).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[1].InsertBottom(imgfactory.Rotate(im.Image(), 16, 0, 0).Image(), 0, 0, 37, 291).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // prpr 舔 舔屏 prpr @@ -741,12 +740,12 @@ func prpr(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Prpr.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 330, 330) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 330, 330) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 8, 0, 0).Im, 0, 0, 46, 264).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 8, 0, 0).Image(), 0, 0, 46, 264).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // safeSense 安全感 @@ -775,7 +774,7 @@ func safeSense(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(430, 478) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(face, 215, 343).Im, 215, 135) + canvas.DrawImage(imgfactory.Size(face, 215, 343).Image(), 215, 135) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -817,12 +816,12 @@ func support(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Support.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 815, 815) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 815, 815) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 23, 0, 0).Im, 0, 0, -172, -17).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 23, 0, 0).Image(), 0, 0, -172, -17).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // thinkwhat 想什么 @@ -845,12 +844,12 @@ func thinkwhat(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Thinkwhat.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 534, 493) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 534, 493) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 530, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 530, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // wallpaper 墙纸 @@ -873,12 +872,12 @@ func wallpaper(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Wallpaper.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 775, 496) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 775, 496) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 260, 580).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 260, 580).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // whyatme 为什么at我 @@ -901,12 +900,12 @@ func whyatme(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Whyatme.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 265, 265) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 265, 265) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 42, 13).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 42, 13).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // makeFriend 交个朋友 @@ -934,9 +933,9 @@ func makeFriend(cc *context, args ...string) (string, error) { return "", err } canvas := gg.NewContext(1000, 1000) - canvas.DrawImage(img.Size(face, 1000, 1000).Im, 0, 0) - canvas.DrawImage(img.Rotate(face, 9, 250, 250).Im, 743, 845) - canvas.DrawImage(img.Rotate(face, 9, 55, 55).Im, 836, 722) + canvas.DrawImage(imgfactory.Size(face, 1000, 1000).Image(), 0, 0) + canvas.DrawImage(imgfactory.Rotate(face, 9, 250, 250).Image(), 743, 845) + canvas.DrawImage(imgfactory.Rotate(face, 9, 55, 55).Image(), 836, 722) canvas.DrawImage(back, 0, 0) canvas.SetColor(color.White) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) @@ -978,12 +977,12 @@ func backToWork(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "BackToWork.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 220, 310) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 220, 310) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 25, 0, 0).Im, 0, 0, 56, 32).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 25, 0, 0).Image(), 0, 0, 56, 32).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // coupon 兑换券 @@ -1016,7 +1015,7 @@ func coupon(cc *context, args ...string) (string, error) { canvas := gg.NewContext(500, 355) canvas.DrawImage(back, 0, 0) canvas.Rotate(gg.Radians(-22)) - canvas.DrawImage(img.Size(face, 60, 60).Im, 100, 163) + canvas.DrawImage(imgfactory.Size(face, 60, 60).Image(), 100, 163) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -1057,12 +1056,12 @@ func distracted(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "Distracted.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 500, 500) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 500, 500) if err != nil { return "", err } - imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 140, 320).InsertUp(imgs[1].Im, 0, 0, 0, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 140, 320).InsertUp(imgs[1].Image(), 0, 0, 0, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // throw 扔 @@ -1089,8 +1088,8 @@ func throw(cc *context, args ...string) (string, error) { if err != nil { return "", err } - imgnrgba := imgs[0].InsertUpC(img.Rotate(face, float64(rand.Intn(360)), 143, 143).Im, 0, 0, 86, 249).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertUpC(imgfactory.Rotate(face, float64(rand.Intn(360)), 143, 143).Image(), 0, 0, 86, 249).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // 远离 @@ -1113,12 +1112,12 @@ func yuanli(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "yuanli.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 534, 493) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 534, 493) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 420, 420, 45, 90).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 420, 420, 45, 90).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // 不是你老婆 @@ -1141,12 +1140,12 @@ func nowife(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "nowife.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 534, 493) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 534, 493) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 400, 400, 112, 81).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 400, 400, 112, 81).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // youer 你老婆 @@ -1175,7 +1174,7 @@ func youer(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(690, 690) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(tou, 350, 350).Im, 55, 165) + canvas.DrawImage(imgfactory.Size(tou, 350, 350).Image(), 55, 165) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -1222,7 +1221,7 @@ func xiaotianshi(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(522, 665) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(face, 480, 480).Im, 20, 80) + canvas.DrawImage(imgfactory.Size(face, 480, 480).Image(), 20, 80) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -1263,12 +1262,12 @@ func neko(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "neko.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 712, 949) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 712, 949) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 450, 450, 0, 170).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 0, 0, 0).Image(), 450, 450, 0, 170).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // 给我变 @@ -1292,12 +1291,12 @@ func bian(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "bian.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 640, 550) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 640, 550) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 380, 380, 225, -20).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 0, 0, 0).Image(), 380, 380, 225, -20).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // van 玩一下 @@ -1326,7 +1325,7 @@ func van(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(522, 665) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(face, 480, 480).Im, 20, 80) + canvas.DrawImage(imgfactory.Size(face, 480, 480).Image(), 20, 80) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { @@ -1367,12 +1366,12 @@ func eihei(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "eihei.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 690, 690) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 690, 690) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 450, 450, 121, 162).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 450, 450, 121, 162).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // fanfa 犯法 @@ -1399,9 +1398,9 @@ func fanfa(cc *context, args ...string) (string, error) { if err != nil { return "", err } - m1 := img.Rotate(face, 45, 110, 110) - imgnrgba := imgs[0].InsertUp(m1.Im, 0, 0, 125, 360).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + m1 := imgfactory.Rotate(face, 45, 110, 110) + imgnrgba := imgs[0].InsertUp(m1.Image(), 0, 0, 125, 360).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // huai 怀 @@ -1424,12 +1423,12 @@ func huai(cc *context, args ...string) (string, error) { return "", err } name := cc.usrdir + "huai.png" - im, err := img.LoadFirstFrame(cc.headimgsdir[0], 640, 640) + im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 640, 640) if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(im.Im, 640, 640, 0, 0).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(im.Image(), 640, 640, 0, 0).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // haowan 好玩 @@ -1456,8 +1455,8 @@ func haowan(cc *context, args ...string) (string, error) { if err != nil { return "", err } - imgnrgba := imgs[0].InsertBottom(face, 90, 90, 321, 172).Im - return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) + imgnrgba := imgs[0].InsertBottom(face, 90, 90, 321, 172).Image() + return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba) } // mengbi 蒙蔽 @@ -1486,8 +1485,8 @@ func mengbi(cc *context, args ...string) (string, error) { } canvas := gg.NewContext(1080, 1080) canvas.DrawImage(back, 0, 0) - canvas.DrawImage(img.Size(face, 100, 100).Im, 392, 460) - canvas.DrawImage(img.Size(face, 100, 100).Im, 606, 443) + canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 392, 460) + canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 606, 443) canvas.SetColor(color.Black) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) if err != nil { diff --git a/plugin/guessmusic/main.go b/plugin/guessmusic/main.go index 4aa95691..371136a8 100644 --- a/plugin/guessmusic/main.go +++ b/plugin/guessmusic/main.go @@ -9,6 +9,7 @@ import ( "time" wyy "github.com/FloatTech/AnimeAPI/neteasemusic" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -19,7 +20,6 @@ import ( // 图片输出 "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/process" "github.com/FloatTech/gg" "github.com/FloatTech/zbputils/img/text" @@ -446,11 +446,14 @@ func init() { canvas.DrawString("当前设置的默认歌单为: "+dlist.Name, 80, float64(85+20*j)-h) } } - data, cl := writer.ToBytes(canvas.Image()) + data, err := imgfactory.ToBytes(canvas.Image()) + if err != nil { + ctx.SendChain(message.Text(serviceErr, err)) + return + } if id := ctx.SendChain(message.ImageBytes(data)); id.ID() == 0 { ctx.SendChain(message.Text("ERROR: 可能被风控了")) } - cl() }) engine.OnPrefix("设置猜歌默认歌单", zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { diff --git a/plugin/qqwife/command.go b/plugin/qqwife/command.go index f17b7c5b..b0d904c8 100644 --- a/plugin/qqwife/command.go +++ b/plugin/qqwife/command.go @@ -10,6 +10,7 @@ import ( "time" "github.com/FloatTech/floatbox/math" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" control "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -23,7 +24,6 @@ import ( // 画图 fcext "github.com/FloatTech/floatbox/ctxext" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/gg" "github.com/FloatTech/zbputils/img/text" ) @@ -263,9 +263,12 @@ func init() { canvas.DrawString(slicename(info[2], canvas), 800, float64(260+50*i)-h) canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h) } - data, cl := writer.ToBytes(canvas.Image()) + data, err := imgfactory.ToBytes(canvas.Image()) + if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil { + ctx.SendChain(message.Text("[qqwife]ERROR: ", err)) + return + } ctx.SendChain(message.ImageBytes(data)) - cl() }) engine.OnRegex(`^重置(所有|本群|/d+)?花名册$`, zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser). Handle(func(ctx *zero.Ctx) { diff --git a/plugin/qqwife/favorSystem.go b/plugin/qqwife/favorSystem.go index f7619481..94d166f6 100644 --- a/plugin/qqwife/favorSystem.go +++ b/plugin/qqwife/favorSystem.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/FloatTech/floatbox/math" + "github.com/FloatTech/imgfactory" control "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -15,7 +16,6 @@ import ( // 画图 "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/gg" "github.com/FloatTech/zbputils/img/text" @@ -189,9 +189,12 @@ func init() { canvas.Fill() i++ } - data, cl := writer.ToBytes(canvas.Image()) + data, err := imgfactory.ToBytes(canvas.Image()) + if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil { + ctx.SendChain(message.Text("[qqwife]ERROR: ", err)) + return + } ctx.SendChain(message.ImageBytes(data)) - cl() }) engine.OnFullMatch("好感度数据整理", zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser). diff --git a/plugin/qzone/qzone.go b/plugin/qzone/qzone.go index f1c2a314..e6942b38 100644 --- a/plugin/qzone/qzone.go +++ b/plugin/qzone/qzone.go @@ -14,13 +14,12 @@ import ( "github.com/FloatTech/AnimeAPI/qzone" "github.com/FloatTech/floatbox/binary" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" "github.com/jinzhu/gorm" zero "github.com/wdvxdr1123/ZeroBot" @@ -324,7 +323,7 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) { if err != nil { return } - back := img.Size(faceImg, backX, backY).Circle(0).Im + back := imgfactory.Size(faceImg, backX, backY).Circle(0).Image() m := message.ParseMessageFromString(raw) maxHeight += margin @@ -349,7 +348,7 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) { } canvas.DrawImage(back, margin, maxHeight) if msgImg.Bounds().Dx() > 500 { - msgImg = img.Size(msgImg, 500, msgImg.Bounds().Dy()*500/msgImg.Bounds().Dx()).Im + msgImg = imgfactory.Size(msgImg, 500, msgImg.Bounds().Dy()*500/msgImg.Bounds().Dx()).Image() } canvas.DrawImage(msgImg, 2*margin+backX, maxHeight) if 3*margin+backX+msgImg.Bounds().Dx() > maxWidth { @@ -363,5 +362,5 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) { } im := canvas.Image().(*image.RGBA) nim := im.SubImage(image.Rect(0, 0, maxWidth, maxHeight)) - return writer.ToBase64(nim) + return imgfactory.ToBase64(nim) } diff --git a/plugin/scale/main.go b/plugin/scale/main.go index 77b8e3c1..e22eab90 100644 --- a/plugin/scale/main.go +++ b/plugin/scale/main.go @@ -20,15 +20,14 @@ import ( "github.com/FloatTech/AnimeAPI/nsfw" "github.com/FloatTech/AnimeAPI/scale" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/floatbox/binary" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/img" ) func init() { @@ -81,10 +80,10 @@ func init() { x := im.Bounds().Size().X * 512 / px y := im.Bounds().Size().Y * 512 / px ctx.SendChain(message.Text("图片", im.Bounds().Size().X, "x", im.Bounds().Size().Y, "过大,调整图片至", x, "x", y)) - im = img.Size(im, x, y).Im + im = imgfactory.Size(im, x, y).Image() w := binary.SelectWriter() defer binary.PutWriter(w) - _, err = writer.WriteTo(im, w) + _, err = imgfactory.WriteTo(im, w) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/score/sign_in.go b/plugin/score/sign_in.go index 16f965bc..2d422f0b 100644 --- a/plugin/score/sign_in.go +++ b/plugin/score/sign_in.go @@ -12,14 +12,13 @@ import ( "github.com/FloatTech/AnimeAPI/bilibili" "github.com/FloatTech/AnimeAPI/wallet" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/process" "github.com/FloatTech/floatbox/web" "github.com/FloatTech/gg" + "github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/img" "github.com/FloatTech/zbputils/img/text" "github.com/golang/freetype" log "github.com/sirupsen/logrus" @@ -121,7 +120,7 @@ func init() { return } // 避免图片过大,最大 1280*720 - back = img.Limit(back, 1280, 720) + back = imgfactory.Limit(back, 1280, 720) canvas := gg.NewContext(back.Bounds().Size().X, int(float64(back.Bounds().Size().Y)*1.7)) canvas.SetRGB(1, 1, 1) canvas.Clear() @@ -171,12 +170,15 @@ func init() { f, err := os.Create(drawedFile) if err != nil { log.Errorln("[score]", err) - data, cl := writer.ToBytes(canvas.Image()) + data, err := imgfactory.ToBytes(canvas.Image()) + if err != nil { + log.Errorln("[score]", err) + return + } ctx.SendChain(message.ImageBytes(data)) - cl() return } - _, err = writer.WriteTo(canvas.Image(), f) + _, err = imgfactory.WriteTo(canvas.Image(), f) _ = f.Close() if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) diff --git a/plugin/wordle/wordle.go b/plugin/wordle/wordle.go index 8f468496..f163e0ca 100644 --- a/plugin/wordle/wordle.go +++ b/plugin/wordle/wordle.go @@ -13,10 +13,10 @@ import ( "time" "github.com/FloatTech/AnimeAPI/tl" + "github.com/FloatTech/imgfactory" "github.com/FloatTech/floatbox/binary" fcext "github.com/FloatTech/floatbox/ctxext" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/gg" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" @@ -135,14 +135,13 @@ func init() { return } game := newWordleGame(target) - _, img, cl, _ := game("") + _, img, _ := game("") ctx.Send( message.ReplyWithMessage(ctx.Event.MessageID, message.ImageBytes(img), message.Text("你有", class+1, "次机会猜出单词,单词长度为", class, ",请发送单词"), ), ) - cl() var next *zero.FutureEvent if ctx.State["regex_matched"].([]string)[1] == "个人" { next = zero.NewFutureEvent("message", 999, false, zero.RegexRule(fmt.Sprintf(`^([A-Z]|[a-z]){%d}$`, class)), @@ -170,7 +169,7 @@ func init() { case c := <-recv: tick.Reset(105 * time.Second) after.Reset(120 * time.Second) - win, img, cl, err = game(c.Event.Message.String()) + win, img, err = game(c.Event.Message.String()) switch { case win: tick.Stop() @@ -181,7 +180,6 @@ func init() { message.Text("太棒了,你猜出来了!答案是: ", target, "(", tt, ")"), ), ) - cl() return case err == errTimesRunOut: tick.Stop() @@ -192,7 +190,6 @@ func init() { message.Text("游戏结束...答案是: ", target, "(", tt, ")"), ), ) - cl() return case err == errLengthNotEnough: ctx.Send( @@ -212,17 +209,16 @@ func init() { message.ImageBytes(img), ), ) - cl() } } } }) } -func newWordleGame(target string) func(string) (bool, []byte, func(), error) { +func newWordleGame(target string) func(string) (bool, []byte, error) { var class = len(target) record := make([]string, 0, len(target)+1) - return func(s string) (win bool, data []byte, cl func(), err error) { + return func(s string) (win bool, data []byte, err error) { if s != "" { s = strings.ToLower(s) if target == s { @@ -241,6 +237,7 @@ func newWordleGame(target string) func(string) (bool, []byte, func(), error) { record = append(record, s) if len(record) >= cap(record) { err = errTimesRunOut + return } } var side = 20 @@ -271,7 +268,7 @@ func newWordleGame(target string) func(string) (bool, []byte, func(), error) { } } } - data, cl = writer.ToBytes(ctx.Image()) + data, err = imgfactory.ToBytes(ctx.Image()) return } }