update deps

This commit is contained in:
源文雨 2023-02-07 16:39:07 +08:00
parent 4f65900688
commit 7e11924b3f
20 changed files with 482 additions and 465 deletions

13
go.mod
View File

@ -4,14 +4,15 @@ go 1.19
require ( require (
github.com/Baidu-AIP/golang-sdk v1.1.1 github.com/Baidu-AIP/golang-sdk v1.1.1
github.com/FloatTech/AnimeAPI v1.6.1-0.20230130095520-be357484e5a7 github.com/FloatTech/AnimeAPI v1.6.1-0.20230207081411-573533b18194
github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68 github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d
github.com/FloatTech/gg v1.1.0 github.com/FloatTech/gg v1.1.1
github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c github.com/FloatTech/imgfactory v0.2.1
github.com/FloatTech/rendercard v0.0.9
github.com/FloatTech/sqlite v1.5.7 github.com/FloatTech/sqlite v1.5.7
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b
github.com/FloatTech/zbpctrl v1.5.3-0.20230130095145-714ad318cd52 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/syncx v0.0.0-20221202055724-5f842c53020e
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
github.com/antchfx/htmlquery v1.2.5 github.com/antchfx/htmlquery v1.2.5
@ -36,7 +37,7 @@ require (
github.com/sirupsen/logrus v1.9.0 github.com/sirupsen/logrus v1.9.0
github.com/tidwall/gjson v1.14.4 github.com/tidwall/gjson v1.14.4
github.com/wcharczuk/go-chart/v2 v2.1.0 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 gitlab.com/gomidi/midi/v2 v2.0.25
golang.org/x/image v0.3.0 golang.org/x/image v0.3.0
golang.org/x/text v0.6.0 golang.org/x/text v0.6.0

26
go.sum
View File

@ -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/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/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/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.20230207081411-573533b18194 h1:+p85V0fdZNt3UoKreBeI6S3IOPvNmU5/Fnn39ipSkVk=
github.com/FloatTech/AnimeAPI v1.6.1-0.20230130095520-be357484e5a7/go.mod h1:LmHu358Oovtxhc/7xz+IfffUAMCX2bijpEvWatacEYQ= github.com/FloatTech/AnimeAPI v1.6.1-0.20230207081411-573533b18194/go.mod h1:LCiKZivPVazRRCnnADQfIBFZiIPHHCFqaCpwZWsFehI=
github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68 h1:K03MRdjGBtoZ7QOnyeKf8dmxsRoNF7dN0udNrR5t138= github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d h1:vVqMO5Kejt5pueuZvBxfX+psa7UwE110TpITf5eV7Zw=
github.com/FloatTech/floatbox v0.0.0-20230205065512-4039f6dd0a68/go.mod h1:OoZE4Ra7olpFaJSrlD6mcyT4chPLg9QBRE1pzTC8R84= github.com/FloatTech/floatbox v0.0.0-20230207075003-0f70b30c320d/go.mod h1:OoZE4Ra7olpFaJSrlD6mcyT4chPLg9QBRE1pzTC8R84=
github.com/FloatTech/gg v1.1.0 h1:4qmsleYqRZ/gv48izGgkyJgvP1RmybA5xJJnzkhK/OU= github.com/FloatTech/gg v1.1.1 h1:pY6spOq9QMVSkL1rvrMx/dMIvtwtYZcyb9Phs7AA9Rc=
github.com/FloatTech/gg v1.1.0/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI= github.com/FloatTech/gg v1.1.1/go.mod h1:uzPzAeT35egARdRuu+1oyjU3CmTwCceoq3Vvje7LpcI=
github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c h1:nE1X4Z3BAyYydlo0QKVU/nUtEyF5ek/cN6S5sZsyio4= github.com/FloatTech/imgfactory v0.2.1 h1:XoVwy0Xu0AvTRtzlhv5teZcuZlAcHrYjeQ8MynJ/zlk=
github.com/FloatTech/rendercard v0.0.9-0.20230206125820-929cee91387c/go.mod h1:0LVxMhsw6LayHM78pJ58/TCkx0/CIVuYc19fCHpM/5g= 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 h1:Bvo4LSojcZ6dVtbHrkqvt6z4v8e+sj0G5PSUIvdawsk=
github.com/FloatTech/sqlite v1.5.7/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY= 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 h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw=
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= 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 h1:BrStRXeosWh8L0iA/EjPd8w6xNexDkqki39ITZko/9Q=
github.com/FloatTech/zbpctrl v1.5.3-0.20230130095145-714ad318cd52/go.mod h1:qqMLUwR7tKpqnAqsgI7aZbn0hbs2FEVF4ylMXqIpBdY= 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.20230207081254-6cd17551aace h1:0Q3C/ma/mfkOgBtHhG1ogAMl66YXK9VH3iwLZJC/IZA=
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/go.mod h1:Ekq++wMLm0jy9YcdCvQ7JbpypyIL1GGCvLIxPbEwqlE=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= 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 h1:wR3MXQ3VbUlPKOOUwLOYgh/QaJThBTYtsl673O3lqSA=
github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= 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/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 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I=
github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= 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.9 h1:vaFqtIXpyeU60xEddg4EsN6cX6cpB3MKhLbe/MQ5OVw=
github.com/wdvxdr1123/ZeroBot v1.6.8/go.mod h1:T5kD5vLi/YxL/fyDOCOaawi96LRBdJjcXh2CIjDyFfg= 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.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=

View File

@ -14,14 +14,13 @@ import (
"github.com/FloatTech/AnimeAPI/bilibili" "github.com/FloatTech/AnimeAPI/bilibili"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/rendercard" "github.com/FloatTech/rendercard"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
"github.com/disintegration/imaging" "github.com/disintegration/imaging"
"github.com/shirou/gopsutil/v3/cpu" "github.com/shirou/gopsutil/v3/cpu"
@ -70,11 +69,14 @@ func init() { // 插件主体
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return 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 { if id := ctx.SendChain(message.ImageBytes(sendimg)); id.ID() == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了")) ctx.SendChain(message.Text("ERROR: 可能被风控了"))
} }
cl()
}) })
engine.OnRegex(`^设置默认限速为每\s*(\d+)\s*(分钟|秒)\s*(\d+)\s*次触发$`, zero.SuperUserPermission).SetBlock(true). engine.OnRegex(`^设置默认限速为每\s*(\d+)\s*(分钟|秒)\s*(\d+)\s*次触发$`, zero.SuperUserPermission).SetBlock(true).
Handle(func(ctx *zero.Ctx) { Handle(func(ctx *zero.Ctx) {
@ -153,7 +155,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
if err != nil { if err != nil {
return return
} }
avatarf := img.Size(avatar, 200, 200) avatarf := imgfactory.Size(avatar, 200, 200)
fontbyte, err := file.GetLazyData(text.GlowSansFontFile, control.Md5File, true) fontbyte, err := file.GetLazyData(text.GlowSansFontFile, control.Md5File, true)
if err != nil { 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()) bh, bw, ch, cw := float64(back.Bounds().Dy()), float64(back.Bounds().Dx()), float64(canvas.H()), float64(canvas.W())
if bh/bw < ch/cw { 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) canvas.DrawImageAnchored(back, canvas.W()/2, canvas.H()/2, 0.5, 0.5)
} else { } 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) 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.SetRGBA255(255, 255, 255, 140)
titlecard.Fill() 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) err = titlecard.ParseFontFace(fontbyte, 72)
if err != nil { if err != nil {

View File

@ -11,8 +11,8 @@ import (
"strings" "strings"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
@ -73,7 +73,7 @@ func init() { // 插件主体
} }
// 图片转base64 // 图片转base64
base64Bytes, err := writer.ToBase64(img) base64Bytes, err := imgfactory.ToBase64(img)
if err != nil { if err != nil {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return

View File

@ -19,12 +19,11 @@ import (
bz "github.com/FloatTech/AnimeAPI/bilibili" bz "github.com/FloatTech/AnimeAPI/bilibili"
fcext "github.com/FloatTech/floatbox/ctxext" fcext "github.com/FloatTech/floatbox/ctxext"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
@ -174,7 +173,7 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return
} }
back = img.Size(back, backX, backY).Im back = imgfactory.Size(back, backX, backY).Image()
} }
if len(vups) > 50 { if len(vups) > 50 {
ctx.SendChain(message.Text(u.Name + "关注的up主太多了, 只展示前50个up")) ctx.SendChain(message.Text(u.Name + "关注的up主太多了, 只展示前50个up"))
@ -259,12 +258,15 @@ func init() {
f, err := os.Create(drawedFile) f, err := os.Create(drawedFile)
if err != nil { if err != nil {
log.Errorln("[bilibili]", err) log.Errorln("[bilibili]", err)
data, cl := writer.ToBytes(canvas.Image()) data, err := imgfactory.ToBytes(canvas.Image())
ctx.SendChain(message.ImageBytes(data)) if err != nil {
cl() log.Errorln("[bilibili]", err)
return return
} }
_, err = writer.WriteTo(canvas.Image(), f) ctx.SendChain(message.ImageBytes(data))
return
}
_, err = imgfactory.WriteTo(canvas.Image(), f)
_ = f.Close() _ = f.Close()
if err != nil { if err != nil {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
@ -318,7 +320,7 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return
} }
back = img.Size(back, backX, backY).Im back = imgfactory.Size(back, backX, backY).Image()
} }
canvas := gg.NewContext(100, 100) canvas := gg.NewContext(100, 100)
fontSize := 50.0 fontSize := 50.0
@ -384,7 +386,7 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return
} }
back = img.Size(back, backX, backY).Im back = imgfactory.Size(back, backX, backY).Image()
} }
if back != nil { if back != nil {
canvas.DrawImage(back, facestart, int(channelStart)) canvas.DrawImage(back, facestart, int(channelStart))
@ -520,12 +522,15 @@ func init() {
f, err := os.Create(drawedFile) f, err := os.Create(drawedFile)
if err != nil { if err != nil {
log.Errorln("[bilibili]", err) log.Errorln("[bilibili]", err)
data, cl := writer.ToBytes(nim) data, err := imgfactory.ToBytes(nim)
ctx.SendChain(message.ImageBytes(data)) if err != nil {
cl() log.Errorln("[bilibili]", err)
return return
} }
_, err = writer.WriteTo(nim, f) ctx.SendChain(message.ImageBytes(data))
return
}
_, err = imgfactory.WriteTo(nim, f)
_ = f.Close() _ = f.Close()
if err != nil { if err != nil {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))

View File

@ -7,7 +7,7 @@ import (
"strings" "strings"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
@ -39,7 +39,7 @@ func init() { // 插件主体
digest := md5.Sum(helper.StringToBytes(url)) digest := md5.Sum(helper.StringToBytes(url))
f := cachefolder + hex.EncodeToString(digest[:]) f := cachefolder + hex.EncodeToString(digest[:])
if file.IsNotExist(f) { 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 := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image("file:///"+file.BOTPATH+"/"+f))}
m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Text("tags: ", strings.Join(st.tseq, ",")))) m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Text("tags: ", strings.Join(st.tseq, ","))))

View File

@ -11,8 +11,8 @@ import (
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
imgutils "github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" // jpg png gif "github.com/FloatTech/zbputils/img/text" // jpg png gif
_ "golang.org/x/image/webp" // webp _ "golang.org/x/image/webp" // webp
) )
@ -94,7 +94,7 @@ func tagurl(name, u string) (im image.Image, st *sorttags, err error) {
return 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 := 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) canvas.SetRGB(1, 1, 1)

View File

@ -12,6 +12,7 @@ import (
"strconv" "strconv"
"github.com/FloatTech/gg" // 注册了 jpg png gif "github.com/FloatTech/gg" // 注册了 jpg png gif
"github.com/FloatTech/imgfactory"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/message"
@ -19,7 +20,6 @@ import (
fcext "github.com/FloatTech/floatbox/ctxext" fcext "github.com/FloatTech/floatbox/ctxext"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/math" "github.com/FloatTech/floatbox/math"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "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 { func offest(total, now int, distance float64) float64 {

View File

@ -14,8 +14,8 @@ import (
"sync/atomic" "sync/atomic"
fcext "github.com/FloatTech/floatbox/ctxext" fcext "github.com/FloatTech/floatbox/ctxext"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/process" "github.com/FloatTech/floatbox/process"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
@ -100,7 +100,11 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return
} }
b, cl := writer.ToBytes(img) b, err := imgfactory.ToBytes(img)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
if mode { if mode {
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID,
message.Text("恭喜你抽到了: \n", str), message.ImageBytes(b))) message.Text("恭喜你抽到了: \n", str), message.ImageBytes(b)))
@ -108,7 +112,6 @@ func init() {
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID,
message.Text("十连成功~"), message.ImageBytes(b))) message.Text("十连成功~"), message.ImageBytes(b)))
} }
cl()
}) })
} }

View File

@ -7,7 +7,7 @@ import (
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/zbputils/img" "github.com/FloatTech/imgfactory"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
@ -97,10 +97,10 @@ func newContext(user int64) *context {
return c return c
} }
func loadFirstFrames(paths []string, size int) (imgs []*img.Factory, err error) { func loadFirstFrames(paths []string, size int) (imgs []*imgfactory.Factory, err error) {
imgs = make([]*img.Factory, size) imgs = make([]*imgfactory.Factory, size)
for i := range imgs { 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 { if err != nil {
return nil, err return nil, err
} }

View File

@ -7,10 +7,9 @@ import (
"sync" "sync"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
) )
@ -39,13 +38,13 @@ func mo(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
mo := []*image.NRGBA{ mo := []*image.NRGBA{
imgs[0].InsertBottom(tou, 80, 80, 32, 32).Im, imgs[0].InsertBottom(tou, 80, 80, 32, 32).Image(),
imgs[1].InsertBottom(tou, 70, 90, 42, 22).Im, imgs[1].InsertBottom(tou, 70, 90, 42, 22).Image(),
imgs[2].InsertBottom(tou, 75, 85, 37, 27).Im, imgs[2].InsertBottom(tou, 75, 85, 37, 27).Image(),
imgs[3].InsertBottom(tou, 85, 75, 27, 37).Im, imgs[3].InsertBottom(tou, 85, 75, 27, 37).Image(),
imgs[4].InsertBottom(tou, 90, 70, 22, 42).Im, 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 搓 // cuo 搓
@ -64,10 +63,10 @@ func cuo(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
m1 := img.Rotate(tou, 72, 0, 0) m1 := imgfactory.Rotate(tou, 72, 0, 0)
m2 := img.Rotate(tou, 144, 0, 0) m2 := imgfactory.Rotate(tou, 144, 0, 0)
m3 := img.Rotate(tou, 216, 0, 0) m3 := imgfactory.Rotate(tou, 216, 0, 0)
m4 := img.Rotate(tou, 288, 0, 0) m4 := imgfactory.Rotate(tou, 288, 0, 0)
wg.Wait() wg.Wait()
if errwg != nil { if errwg != nil {
return "", errwg return "", errwg
@ -77,13 +76,13 @@ func cuo(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
cuo := []*image.NRGBA{ cuo := []*image.NRGBA{
imgs[0].InsertBottomC(tou, 0, 0, 75, 130).Im, imgs[0].InsertBottomC(tou, 0, 0, 75, 130).Image(),
imgs[1].InsertBottomC(m1.Im, 0, 0, 75, 130).Im, imgs[1].InsertBottomC(m1.Image(), 0, 0, 75, 130).Image(),
imgs[2].InsertBottomC(m2.Im, 0, 0, 75, 130).Im, imgs[2].InsertBottomC(m2.Image(), 0, 0, 75, 130).Image(),
imgs[3].InsertBottomC(m3.Im, 0, 0, 75, 130).Im, imgs[3].InsertBottomC(m3.Image(), 0, 0, 75, 130).Image(),
imgs[4].InsertBottomC(m4.Im, 0, 0, 75, 130).Im, 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 敲 // qiao 敲
@ -111,10 +110,10 @@ func qiao(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
qiao := []*image.NRGBA{ qiao := []*image.NRGBA{
imgs[0].InsertUp(tou, 40, 33, 57, 52).Im, imgs[0].InsertUp(tou, 40, 33, 57, 52).Image(),
imgs[1].InsertUp(tou, 38, 36, 58, 50).Im, 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 吃 // chi 吃
@ -142,11 +141,11 @@ func chi(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
chi := []*image.NRGBA{ chi := []*image.NRGBA{
imgs[0].InsertBottom(tou, 0, 0, 1, 38).Im, imgs[0].InsertBottom(tou, 0, 0, 1, 38).Image(),
imgs[1].InsertBottom(tou, 0, 0, 1, 38).Im, imgs[1].InsertBottom(tou, 0, 0, 1, 38).Image(),
imgs[2].InsertBottom(tou, 0, 0, 1, 38).Im, 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 蹭 // ceng 蹭
@ -178,14 +177,14 @@ func ceng(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
ceng := []*image.NRGBA{ ceng := []*image.NRGBA{
imgs[0].InsertUp(tou, 75, 77, 40, 88).InsertUp(tou2, 77, 103, 102, 81).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(img.Rotate(tou2, 10, 62, 127).Im, 0, 0, 92, 40).Im, 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).Im, imgs[2].InsertUp(tou, 75, 77, 67, 99).InsertUp(tou2, 76, 117, 90, 8).Image(),
imgs[3].InsertUp(tou, 75, 77, 52, 83).InsertUp(img.Rotate(tou2, -40, 94, 94).Im, 0, 0, 53, -20).Im, 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(img.Rotate(tou2, -66, 132, 80).Im, 0, 0, 78, 40).Im, 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).Im, 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 啃 // ken 啃
@ -213,24 +212,24 @@ func ken(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
ken := []*image.NRGBA{ ken := []*image.NRGBA{
imgs[0].InsertBottom(tou, 90, 90, 105, 150).Im, imgs[0].InsertBottom(tou, 90, 90, 105, 150).Image(),
imgs[1].InsertBottom(tou, 90, 83, 96, 172).Im, imgs[1].InsertBottom(tou, 90, 83, 96, 172).Image(),
imgs[2].InsertBottom(tou, 90, 90, 106, 148).Im, imgs[2].InsertBottom(tou, 90, 90, 106, 148).Image(),
imgs[3].InsertBottom(tou, 88, 88, 97, 167).Im, imgs[3].InsertBottom(tou, 88, 88, 97, 167).Image(),
imgs[4].InsertBottom(tou, 90, 85, 89, 179).Im, imgs[4].InsertBottom(tou, 90, 85, 89, 179).Image(),
imgs[5].InsertBottom(tou, 90, 90, 106, 151).Im, imgs[5].InsertBottom(tou, 90, 90, 106, 151).Image(),
imgs[6].Im, imgs[6].Image(),
imgs[7].Im, imgs[7].Image(),
imgs[8].Im, imgs[8].Image(),
imgs[9].Im, imgs[9].Image(),
imgs[10].Im, imgs[10].Image(),
imgs[11].Im, imgs[11].Image(),
imgs[12].Im, imgs[12].Image(),
imgs[13].Im, imgs[13].Image(),
imgs[14].Im, imgs[14].Image(),
imgs[15].Im, imgs[15].Image(),
} }
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ken)) return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ken))
} }
// pai 拍 // pai 拍
@ -258,10 +257,10 @@ func pai(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
pai := []*image.NRGBA{ pai := []*image.NRGBA{
imgs[0].InsertUp(tou, 0, 0, 1, 47).Im, imgs[0].InsertUp(tou, 0, 0, 1, 47).Image(),
imgs[1].InsertUp(tou, 0, 0, 1, 67).Im, 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 冲 // xqe 冲
@ -289,10 +288,10 @@ func xqe(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
chong := []*image.NRGBA{ chong := []*image.NRGBA{
imgs[0].InsertUp(tou, 30, 30, 15, 53).Im, imgs[0].InsertUp(tou, 30, 30, 15, 53).Image(),
imgs[1].InsertUp(tou, 30, 30, 40, 53).Im, 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 丢 // diu 丢
@ -320,16 +319,16 @@ func diu(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
diu := []*image.NRGBA{ diu := []*image.NRGBA{
imgs[0].InsertUp(tou, 32, 32, 108, 36).Im, imgs[0].InsertUp(tou, 32, 32, 108, 36).Image(),
imgs[1].InsertUp(tou, 32, 32, 122, 36).Im, imgs[1].InsertUp(tou, 32, 32, 122, 36).Image(),
imgs[2].Im, imgs[2].Image(),
imgs[3].InsertUp(tou, 123, 123, 19, 129).Im, imgs[3].InsertUp(tou, 123, 123, 19, 129).Image(),
imgs[4].InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Im, imgs[4].InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Image(),
imgs[5].InsertUp(tou, 32, 32, 280, 73).Im, imgs[5].InsertUp(tou, 32, 32, 280, 73).Image(),
imgs[6].InsertUp(tou, 35, 35, 259, 31).Im, imgs[6].InsertUp(tou, 35, 35, 259, 31).Image(),
imgs[7].InsertUp(tou, 175, 175, -50, 220).Im, 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 亲 // kiss 亲
@ -366,9 +365,9 @@ func kiss(cc *context, value ...string) (string, error) {
kiss := make([]*image.NRGBA, piclen) kiss := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
kiss[i] = imgs[i].InsertUp(tou, 50, 50, userLocs[i][0], userLocs[i][1]). kiss[i] = imgs[i].InsertUp(tou, 50, 50, userLocs[i][0], userLocs[i][1]).
InsertUp(tou2, 40, 40, selfLocs[i][0], selfLocs[i][1]).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 垃圾 垃圾桶 // garbage 垃圾 垃圾桶
@ -388,7 +387,7 @@ func garbage(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 79, 79) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 79, 79)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -399,9 +398,9 @@ func garbage(cc *context, value ...string) (string, error) {
} }
garbage := make([]*image.NRGBA, piclen) garbage := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 捶 // thump 捶
@ -421,7 +420,7 @@ func thump(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -432,9 +431,9 @@ func thump(cc *context, value ...string) (string, error) {
} }
thump := make([]*image.NRGBA, piclen) thump := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 啾啾 // jiujiu 啾啾
@ -454,7 +453,7 @@ func jiujiu(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 75, 51) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 75, 51)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -464,9 +463,9 @@ func jiujiu(cc *context, value ...string) (string, error) {
} }
jiujiu := make([]*image.NRGBA, piclen) jiujiu := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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敲 // knock 2敲
@ -486,7 +485,7 @@ func knock(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -497,9 +496,9 @@ func knock(cc *context, value ...string) (string, error) {
} }
knock := make([]*image.NRGBA, piclen) knock := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 // 听音乐 listenMusic
@ -529,9 +528,9 @@ func listenMusic(cc *context, value ...string) (string, error) {
} }
listenmusic := make([]*image.NRGBA, 36) listenmusic := make([]*image.NRGBA, 36)
for i := 0; i < 36; i++ { 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 永远爱你 // loveYou 永远爱你
@ -551,7 +550,7 @@ func loveYou(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -562,9 +561,9 @@ func loveYou(cc *context, value ...string) (string, error) {
} }
loveyou := make([]*image.NRGBA, piclen) loveyou := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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拍 // pat 2拍
@ -584,7 +583,7 @@ func pat(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -596,9 +595,9 @@ func pat(cc *context, value ...string) (string, error) {
p := make([]*image.NRGBA, piclen) p := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
if i == 2 { 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 { } 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} 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++ { for i := 0; i < len(pat); i++ {
pat[i] = p[seq[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 顶 // jackUp 顶
@ -626,7 +625,7 @@ func jackUp(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -638,9 +637,9 @@ func jackUp(cc *context, value ...string) (string, error) {
p := make([]*image.NRGBA, piclen) p := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { for i := 0; i < piclen; i++ {
if i < len(locs) { 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 { } else {
p[i] = imgs[i].Im p[i] = imgs[i].Image()
} }
} }
play := make([]*image.NRGBA, 0, 16) 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[0:8]...)
play = append(play, p[12:18]...) play = append(play, p[12:18]...)
play = append(play, p[18:23]...) play = append(play, p[18:23]...)
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, play)) return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, play))
} }
// pound 捣 // pound 捣
@ -669,7 +668,7 @@ func pound(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -680,9 +679,9 @@ func pound(cc *context, value ...string) (string, error) {
} }
pound := make([]*image.NRGBA, piclen) pound := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 打拳 // punch 打拳
@ -702,7 +701,7 @@ func punch(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 260, 260) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 260, 260)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -713,9 +712,9 @@ func punch(cc *context, value ...string) (string, error) {
} }
punch := make([]*image.NRGBA, piclen) punch := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 滚 // roll 滚
@ -735,7 +734,7 @@ func roll(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 210, 210) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 210, 210)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -746,9 +745,9 @@ func roll(cc *context, value ...string) (string, error) {
} }
roll := make([]*image.NRGBA, piclen) roll := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 吸 嗦 // suck 吸 嗦
@ -768,7 +767,7 @@ func suck(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -779,9 +778,9 @@ func suck(cc *context, value ...string) (string, error) {
} }
suck := make([]*image.NRGBA, piclen) suck := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 锤 // hammer 锤
@ -801,7 +800,7 @@ func hammer(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -812,9 +811,9 @@ func hammer(cc *context, value ...string) (string, error) {
} }
hammer := make([]*image.NRGBA, piclen) hammer := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 紧贴 紧紧贴着 // tightly 紧贴 紧紧贴着
@ -834,7 +833,7 @@ func tightly(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -845,9 +844,9 @@ func tightly(cc *context, value ...string) (string, error) {
} }
tightly := make([]*image.NRGBA, piclen) tightly := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 转 // turn 转
@ -864,9 +863,9 @@ func turn(cc *context, value ...string) (string, error) {
canvas.Fill() canvas.Fill()
turn := make([]*image.NRGBA, 36) turn := make([]*image.NRGBA, 36)
for i := 0; i < 36; i++ { 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 抬棺 // taiguan 抬棺
@ -894,28 +893,28 @@ func taiguan(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
taiguan := []*image.NRGBA{ taiguan := []*image.NRGBA{
imgs[0].InsertUp(tou, 85, 85, 180, 65).Im, imgs[0].InsertUp(tou, 85, 85, 180, 65).Image(),
imgs[1].InsertUp(tou, 85, 85, 180, 65).Im, imgs[1].InsertUp(tou, 85, 85, 180, 65).Image(),
imgs[2].InsertUp(tou, 85, 85, 180, 65).Im, imgs[2].InsertUp(tou, 85, 85, 180, 65).Image(),
imgs[3].InsertUp(tou, 85, 85, 180, 65).Im, imgs[3].InsertUp(tou, 85, 85, 180, 65).Image(),
imgs[4].InsertUp(tou, 85, 85, 177, 65).Im, imgs[4].InsertUp(tou, 85, 85, 177, 65).Image(),
imgs[5].InsertUp(tou, 85, 85, 175, 65).Im, imgs[5].InsertUp(tou, 85, 85, 175, 65).Image(),
imgs[6].InsertUp(tou, 85, 85, 173, 65).Im, imgs[6].InsertUp(tou, 85, 85, 173, 65).Image(),
imgs[7].InsertUp(tou, 85, 85, 171, 65).Im, imgs[7].InsertUp(tou, 85, 85, 171, 65).Image(),
imgs[8].InsertUp(tou, 85, 85, 170, 65).Im, imgs[8].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[9].InsertUp(tou, 85, 85, 170, 65).Im, imgs[9].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[10].InsertUp(tou, 85, 85, 170, 65).Im, imgs[10].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[11].InsertUp(tou, 85, 85, 170, 65).Im, imgs[11].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[12].InsertUp(tou, 85, 85, 170, 65).Im, imgs[12].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[13].InsertUp(tou, 85, 85, 170, 65).Im, imgs[13].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[14].InsertUp(tou, 85, 85, 170, 65).Im, imgs[14].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[15].InsertUp(tou, 85, 85, 170, 65).Im, imgs[15].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[16].InsertUp(tou, 85, 85, 170, 65).Im, imgs[16].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[17].InsertUp(tou, 85, 85, 170, 65).Im, imgs[17].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[18].InsertUp(tou, 85, 85, 170, 65).Im, imgs[18].InsertUp(tou, 85, 85, 170, 65).Image(),
imgs[19].InsertUp(tou, 85, 85, 175, 65).Im, 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 揍 // zou 揍
@ -947,11 +946,11 @@ func zou(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
zou := []*image.NRGBA{ zou := []*image.NRGBA{
imgs[0].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 100, 45).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).Im, 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).Im, 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 吞 // ci 吞
@ -979,34 +978,34 @@ func ci(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
ci := []*image.NRGBA{ ci := []*image.NRGBA{
imgs[0].InsertBottom(tou, 25, 25, 25, 57).Im, imgs[0].InsertBottom(tou, 25, 25, 25, 57).Image(),
imgs[1].InsertBottom(tou, 25, 25, 27, 58).Im, imgs[1].InsertBottom(tou, 25, 25, 27, 58).Image(),
imgs[2].InsertBottom(tou, 25, 25, 28, 57).Im, imgs[2].InsertBottom(tou, 25, 25, 28, 57).Image(),
imgs[3].InsertBottom(tou, 25, 25, 30, 57).Im, imgs[3].InsertBottom(tou, 25, 25, 30, 57).Image(),
imgs[4].InsertBottom(tou, 25, 25, 30, 58).Im, imgs[4].InsertBottom(tou, 25, 25, 30, 58).Image(),
imgs[5].InsertBottom(tou, 25, 25, 30, 59).Im, imgs[5].InsertBottom(tou, 25, 25, 30, 59).Image(),
imgs[6].Im, imgs[6].Image(),
imgs[7].Im, imgs[7].Image(),
imgs[8].Im, imgs[8].Image(),
imgs[9].Im, imgs[9].Image(),
imgs[10].Im, imgs[10].Image(),
imgs[11].Im, imgs[11].Image(),
imgs[12].Im, imgs[12].Image(),
imgs[13].Im, imgs[13].Image(),
imgs[14].Im, imgs[14].Image(),
imgs[15].Im, imgs[15].Image(),
imgs[16].Im, imgs[16].Image(),
imgs[17].Im, imgs[17].Image(),
imgs[18].Im, imgs[18].Image(),
imgs[19].Im, imgs[19].Image(),
imgs[20].Im, imgs[20].Image(),
imgs[21].Im, imgs[21].Image(),
imgs[22].Im, imgs[22].Image(),
imgs[23].Im, imgs[23].Image(),
imgs[24].Im, imgs[24].Image(),
imgs[25].Im, imgs[25].Image(),
} }
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ci)) return "file:///" + name, imgfactory.SaveGIF2Path(name, imgfactory.MergeGif(7, ci))
} }
// worship 膜拜 // worship 膜拜
@ -1034,17 +1033,17 @@ func worship(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
worship := []*image.NRGBA{ worship := []*image.NRGBA{
imgs[0].InsertBottom(face, 140, 140, 0, 0).Im, imgs[0].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[1].InsertBottom(face, 140, 140, 0, 0).Im, imgs[1].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[2].InsertBottom(face, 140, 140, 0, 0).Im, imgs[2].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[3].InsertBottom(face, 140, 140, 0, 0).Im, imgs[3].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[4].InsertBottom(face, 140, 140, 0, 0).Im, imgs[4].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[5].InsertBottom(face, 140, 140, 0, 0).Im, imgs[5].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[6].InsertBottom(face, 140, 140, 0, 0).Im, imgs[6].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[7].InsertBottom(face, 140, 140, 0, 0).Im, imgs[7].InsertBottom(face, 140, 140, 0, 0).Image(),
imgs[8].InsertBottom(face, 140, 140, 0, 0).Im, 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蹭 // 2ceng 2蹭
@ -1072,12 +1071,12 @@ func ceng2(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
ceng2 := []*image.NRGBA{ ceng2 := []*image.NRGBA{
imgs[0].InsertBottom(tou, 175, 175, 78, 263).Im, imgs[0].InsertBottom(tou, 175, 175, 78, 263).Image(),
imgs[1].InsertBottom(tou, 175, 175, 78, 263).Im, imgs[1].InsertBottom(tou, 175, 175, 78, 263).Image(),
imgs[2].InsertBottom(tou, 175, 175, 78, 263).Im, imgs[2].InsertBottom(tou, 175, 175, 78, 263).Image(),
imgs[3].InsertBottom(tou, 175, 175, 78, 263).Im, 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 炖 // dun 炖
@ -1105,13 +1104,13 @@ func dun(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
dun := []*image.NRGBA{ dun := []*image.NRGBA{
imgs[0].InsertBottom(tou, 80, 80, 85, 45).Im, imgs[0].InsertBottom(tou, 80, 80, 85, 45).Image(),
imgs[1].InsertBottom(tou, 80, 80, 85, 45).Im, imgs[1].InsertBottom(tou, 80, 80, 85, 45).Image(),
imgs[2].InsertBottom(tou, 80, 80, 85, 45).Im, imgs[2].InsertBottom(tou, 80, 80, 85, 45).Image(),
imgs[3].InsertBottom(tou, 80, 80, 85, 45).Im, imgs[3].InsertBottom(tou, 80, 80, 85, 45).Image(),
imgs[4].InsertBottom(tou, 80, 80, 85, 45).Im, 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 滚高清重置版 过渡 // push 滚高清重置版 过渡
@ -1141,9 +1140,9 @@ func push(cc *context, value ...string) (string, error) {
} }
push := make([]*image.NRGBA, piclen) push := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 砰 // peng 砰
@ -1162,10 +1161,10 @@ func peng(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
m1 := img.Rotate(tou, 1, 80, 80) m1 := imgfactory.Rotate(tou, 1, 80, 80)
m2 := img.Rotate(tou, 30, 80, 80) m2 := imgfactory.Rotate(tou, 30, 80, 80)
m3 := img.Rotate(tou, 45, 85, 85) m3 := imgfactory.Rotate(tou, 45, 85, 85)
m4 := img.Rotate(tou, 90, 80, 80) m4 := imgfactory.Rotate(tou, 90, 80, 80)
wg.Wait() wg.Wait()
if errwg != nil { if errwg != nil {
return "", errwg return "", errwg
@ -1175,33 +1174,33 @@ func peng(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
peng := []*image.NRGBA{ peng := []*image.NRGBA{
imgs[0].Im, imgs[0].Image(),
imgs[1].Im, imgs[1].Image(),
imgs[2].Im, imgs[2].Image(),
imgs[3].Im, imgs[3].Image(),
imgs[4].Im, imgs[4].Image(),
imgs[5].Im, imgs[5].Image(),
imgs[6].Im, imgs[6].Image(),
imgs[7].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[7].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[8].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[8].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[9].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[9].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[10].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[10].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[11].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[11].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[12].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[12].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[13].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[13].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[14].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[14].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[15].InsertUp(m1.Im, 0, 0, 205, 80).Im, imgs[15].InsertUp(m1.Image(), 0, 0, 205, 80).Image(),
imgs[16].InsertUp(m1.Im, 0, 0, 200, 80).Im, imgs[16].InsertUp(m1.Image(), 0, 0, 200, 80).Image(),
imgs[17].InsertUp(m2.Im, 0, 0, 169, 65).Im, imgs[17].InsertUp(m2.Image(), 0, 0, 169, 65).Image(),
imgs[18].InsertUp(m2.Im, 0, 0, 160, 69).Im, imgs[18].InsertUp(m2.Image(), 0, 0, 160, 69).Image(),
imgs[19].InsertUp(m3.Im, 0, 0, 113, 90).Im, imgs[19].InsertUp(m3.Image(), 0, 0, 113, 90).Image(),
imgs[20].InsertUp(m4.Im, 0, 0, 89, 159).Im, imgs[20].InsertUp(m4.Image(), 0, 0, 89, 159).Image(),
imgs[21].InsertUp(m4.Im, 0, 0, 89, 159).Im, imgs[21].InsertUp(m4.Image(), 0, 0, 89, 159).Image(),
imgs[22].InsertUp(m4.Im, 0, 0, 86, 160).Im, imgs[22].InsertUp(m4.Image(), 0, 0, 86, 160).Image(),
imgs[23].InsertUp(m4.Im, 0, 0, 89, 159).Im, imgs[23].InsertUp(m4.Image(), 0, 0, 89, 159).Image(),
imgs[24].InsertUp(m4.Im, 0, 0, 86, 160).Im, 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 可莉吃 // klee 可莉吃
@ -1221,7 +1220,7 @@ func klee(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 82, 83) im, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 82, 83)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -1232,9 +1231,9 @@ func klee(cc *context, value ...string) (string, error) {
} }
klee := make([]*image.NRGBA, piclen) klee := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 胡桃啃 // hutaoken 胡桃啃
@ -1262,10 +1261,10 @@ func hutaoken(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
hutaoken := []*image.NRGBA{ hutaoken := []*image.NRGBA{
imgs[0].InsertBottom(tou, 98, 101, 108, 234).Im, imgs[0].InsertBottom(tou, 98, 101, 108, 234).Image(),
imgs[1].InsertBottom(tou, 96, 100, 108, 237).Im, 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舔 // lick 2舔
@ -1293,10 +1292,10 @@ func lick(cc *context, value ...string) (string, error) {
return "", err return "", err
} }
lick := []*image.NRGBA{ lick := []*image.NRGBA{
imgs[0].InsertUp(tou, 44, 44, 10, 138).Im, imgs[0].InsertUp(tou, 44, 44, 10, 138).Image(),
imgs[1].InsertUp(tou, 44, 44, 10, 138).Im, 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 踢球 // tiqiu 踢球
@ -1327,9 +1326,9 @@ func tiqiu(cc *context, value ...string) (string, error) {
} }
tiqiu := make([]*image.NRGBA, piclen) tiqiu := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 踩 // cai 踩
@ -1356,15 +1355,15 @@ func cai(cc *context, value ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
m1 := img.Rotate(tou, -20, 130, 80) m1 := imgfactory.Rotate(tou, -20, 130, 80)
cai := []*image.NRGBA{ cai := []*image.NRGBA{
imgs[0].InsertBottom(m1.Im, 123, 105, 39, 188).Im, imgs[0].InsertBottom(m1.Image(), 123, 105, 39, 188).Image(),
imgs[1].InsertBottom(m1.Im, 123, 105, 39, 188).Im, imgs[1].InsertBottom(m1.Image(), 123, 105, 39, 188).Image(),
imgs[2].InsertBottom(tou, 90, 71, 50, 209).Im, imgs[2].InsertBottom(tou, 90, 71, 50, 209).Image(),
imgs[3].InsertBottom(tou, 85, 76, 52, 203).Im, imgs[3].InsertBottom(tou, 85, 76, 52, 203).Image(),
imgs[4].InsertBottom(tou, 88, 82, 49, 198).Im, 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转 // whir 2转
@ -1394,26 +1393,26 @@ func whirl(cc *context, value ...string) (string, error) {
} }
whirl := make([]*image.NRGBA, piclen) whirl := make([]*image.NRGBA, piclen)
for i := 0; i < piclen; i++ { 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 一直 // always 一直
func alwaysDoGif(cc *context, value ...string) (string, error) { func alwaysDoGif(cc *context, value ...string) (string, error) {
_ = value _ = value
var err error var err error
var face []*image.NRGBA var face []*imgfactory.Factory
name := cc.usrdir + "AlwaysDo.gif" 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 { if err != nil {
// 载入失败尝试载入第一帧 // 载入失败尝试载入第一帧
face = make([]*image.NRGBA, 0) face = nil
first, err := img.LoadFirstFrame(cc.headimgsdir[0], 500, 500) first, err := imgfactory.LoadFirstFrame(cc.headimgsdir[0], 500, 500)
if err != nil { if err != nil {
return "", err return "", err
} }
face = append(face, first.Im) face = append(face, imgfactory.NewFactory(first.Image()))
} }
canvas := gg.NewContext(500, 600) canvas := gg.NewContext(500, 600)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
@ -1437,13 +1436,13 @@ func alwaysDoGif(cc *context, value ...string) (string, error) {
turn := make([]*image.NRGBA, length) turn := make([]*image.NRGBA, length)
for i, f := range face { for i, f := range face {
canvas := gg.NewContext(500, 600) canvas := gg.NewContext(500, 600)
canvas.DrawImage(f, 0, 0) canvas.DrawImage(f.Image(), 0, 0)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
_ = canvas.LoadFontFace(text.BoldFontFile, 40) _ = canvas.LoadFontFace(text.BoldFontFile, 40)
canvas.DrawString(arg, 280-l, 560) 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) 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))
} }

View File

@ -7,7 +7,7 @@ import (
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/process" "github.com/FloatTech/floatbox/process"
"github.com/FloatTech/zbputils/img" "github.com/FloatTech/imgfactory"
) )
func (cc *context) prepareLogos(s ...string) error { 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) { 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 { if err != nil {
return nil, err 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) { 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 { if err != nil {
return nil, err return nil, err
} }
return frame.Circle(0).Im, nil return frame.Circle(0).Image(), nil
} }

View File

@ -9,10 +9,9 @@ import (
"sync" "sync"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
) )
@ -36,11 +35,11 @@ func pa(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
imgf, err := img.LoadFirstFrame(f, 0, 0) imgf, err := imgfactory.LoadFirstFrame(f, 0, 0)
if err != nil { if err != nil {
return "", err 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 撕 // si 撕
@ -51,8 +50,8 @@ func si(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
im1 := img.Rotate(tou, 20, 380, 380) im1 := imgfactory.Rotate(tou, 20, 380, 380)
im2 := img.Rotate(tou, -12, 380, 380) im2 := imgfactory.Rotate(tou, -12, 380, 380)
if file.IsNotExist(datapath + "materials/si") { if file.IsNotExist(datapath + "materials/si") {
err = os.MkdirAll(datapath+"materials/si", 0755) err = os.MkdirAll(datapath+"materials/si", 0755)
if err != nil { if err != nil {
@ -63,11 +62,11 @@ func si(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
imgf, err := img.LoadFirstFrame(f, 0, 0) imgf, err := imgfactory.LoadFirstFrame(f, 0, 0)
if err != nil { if err != nil {
return "", err 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 上翻,下翻 // flipV 上翻,下翻
@ -75,12 +74,12 @@ func flipV(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "FlipV.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.FlipV().Im imgnrgba := im.FlipV().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// flipH 左翻,右翻 // flipH 左翻,右翻
@ -88,12 +87,12 @@ func flipH(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "FlipH.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.FlipH().Im imgnrgba := im.FlipH().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// invert 反色 // invert 反色
@ -101,12 +100,12 @@ func invert(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "Invert.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.Invert().Im imgnrgba := im.Invert().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// blur 反色 // blur 反色
@ -114,12 +113,12 @@ func blur(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "Blur.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.Blur(10).Im imgnrgba := im.Blur(10).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// grayscale 灰度 // grayscale 灰度
@ -127,12 +126,12 @@ func grayscale(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "Grayscale.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.Grayscale().Im imgnrgba := im.Grayscale().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// invertAndGrayscale 负片 // invertAndGrayscale 负片
@ -140,12 +139,12 @@ func invertAndGrayscale(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "InvertAndGrayscale.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.Invert().Grayscale().Im imgnrgba := im.Invert().Grayscale().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// convolve3x3 浮雕 // convolve3x3 浮雕
@ -153,32 +152,32 @@ func convolve3x3(cc *context, args ...string) (string, error) {
_ = args _ = args
name := cc.usrdir + "Convolve3x3.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.Convolve3x3().Im imgnrgba := im.Relief().Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// rotate 旋转 // rotate 旋转
func rotate(cc *context, args ...string) (string, error) { func rotate(cc *context, args ...string) (string, error) {
name := cc.usrdir + "Rotate.png" 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 { if err != nil {
return "", err return "", err
} }
r, _ := strconv.ParseFloat(args[0], 64) r, _ := strconv.ParseFloat(args[0], 64)
imgnrgba := img.Rotate(im.Im, r, 0, 0).Im imgnrgba := imgfactory.Rotate(im.Image(), r, 0, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// deformation 变形 // deformation 变形
func deformation(cc *context, args ...string) (string, error) { func deformation(cc *context, args ...string) (string, error) {
name := cc.usrdir + "Deformation.png" 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 { if err != nil {
return "", err return "", err
} }
@ -190,8 +189,8 @@ func deformation(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
imgnrgba := img.Size(im.Im, w, h).Im imgnrgba := imgfactory.Size(im.Image(), w, h).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// alike 你像个xxx一样 // alike 你像个xxx一样
@ -214,12 +213,12 @@ func alike(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Anyasuki.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertUp(im.Im, 0, 0, 136, 21).Im imgnrgba := imgs[0].InsertUp(im.Image(), 0, 0, 136, 21).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// marriage // marriage
@ -242,12 +241,12 @@ func marriage(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Marriage.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).InsertUp(imgs[1].Im, 0, 0, 800, 0).Im imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).InsertUp(imgs[1].Image(), 0, 0, 800, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// anyasuki 阿尼亚喜欢 // anyasuki 阿尼亚喜欢
@ -275,7 +274,7 @@ func anyasuki(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
canvas := gg.NewContext(475, 540) 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.DrawImage(back, 0, 0)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, 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 := gg.NewContext(830, 599)
canvas.DrawImage(back, 0, 0) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -363,12 +362,12 @@ func decentKiss(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "DecentKiss.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).Im imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// chinaFlag 国旗 // chinaFlag 国旗
@ -391,12 +390,12 @@ func chinaFlag(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "ChinaFlag.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 0, 0).Im imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 0, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// dontTouch 不要靠近 // dontTouch 不要靠近
@ -419,12 +418,12 @@ func dontTouch(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "DontTouch.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertUp(im.Im, 148, 148, 46, 238).Im imgnrgba := imgs[0].InsertUp(im.Image(), 148, 148, 46, 238).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// universal 万能表情 空白表情 // universal 万能表情 空白表情
@ -436,7 +435,7 @@ func universal(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
canvas := gg.NewContext(500, 550) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -485,7 +484,7 @@ func interview(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
canvas := gg.NewContext(600, 300) 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(huaji, 376, 50)
canvas.DrawImage(microphone, 300, 50) canvas.DrawImage(microphone, 300, 50)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
@ -527,12 +526,12 @@ func need(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Need.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 327, 232).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 327, 232).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// paint 这像画吗 // paint 这像画吗
@ -555,12 +554,12 @@ func paint(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Paint.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 4, 0, 0).Im, 0, 0, 95, 107).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 4, 0, 0).Image(), 0, 0, 95, 107).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// painter 小画家 // painter 小画家
@ -583,12 +582,12 @@ func painter(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Painter.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 125, 91).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 125, 91).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// perfect 完美 // perfect 完美
@ -611,12 +610,12 @@ func perfect(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Perfect.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertUp(im.Im, 0, 0, 313, 64).Im imgnrgba := imgs[0].InsertUp(im.Image(), 0, 0, 313, 64).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// playGame 玩游戏 // playGame 玩游戏
@ -644,7 +643,7 @@ func playGame(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
canvas := gg.NewContext(526, 503) 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.DrawImage(back, 0, 0)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
@ -685,12 +684,12 @@ func police(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Police.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 224, 46).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 224, 46).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// police1 警察 // police1 警察
@ -713,12 +712,12 @@ func police1(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Police1.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[1].InsertBottom(img.Rotate(im.Im, 16, 0, 0).Im, 0, 0, 37, 291).Im imgnrgba := imgs[1].InsertBottom(imgfactory.Rotate(im.Image(), 16, 0, 0).Image(), 0, 0, 37, 291).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// prpr 舔 舔屏 prpr // prpr 舔 舔屏 prpr
@ -741,12 +740,12 @@ func prpr(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Prpr.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 8, 0, 0).Im, 0, 0, 46, 264).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 8, 0, 0).Image(), 0, 0, 46, 264).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// safeSense 安全感 // safeSense 安全感
@ -775,7 +774,7 @@ func safeSense(cc *context, args ...string) (string, error) {
} }
canvas := gg.NewContext(430, 478) canvas := gg.NewContext(430, 478)
canvas.DrawImage(back, 0, 0) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -817,12 +816,12 @@ func support(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Support.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 23, 0, 0).Im, 0, 0, -172, -17).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 23, 0, 0).Image(), 0, 0, -172, -17).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// thinkwhat 想什么 // thinkwhat 想什么
@ -845,12 +844,12 @@ func thinkwhat(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Thinkwhat.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 530, 0).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 530, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// wallpaper 墙纸 // wallpaper 墙纸
@ -873,12 +872,12 @@ func wallpaper(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Wallpaper.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 260, 580).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 260, 580).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// whyatme 为什么at我 // whyatme 为什么at我
@ -901,12 +900,12 @@ func whyatme(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Whyatme.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 0, 0, 42, 13).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 0, 0, 42, 13).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// makeFriend 交个朋友 // makeFriend 交个朋友
@ -934,9 +933,9 @@ func makeFriend(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
canvas := gg.NewContext(1000, 1000) canvas := gg.NewContext(1000, 1000)
canvas.DrawImage(img.Size(face, 1000, 1000).Im, 0, 0) canvas.DrawImage(imgfactory.Size(face, 1000, 1000).Image(), 0, 0)
canvas.DrawImage(img.Rotate(face, 9, 250, 250).Im, 743, 845) canvas.DrawImage(imgfactory.Rotate(face, 9, 250, 250).Image(), 743, 845)
canvas.DrawImage(img.Rotate(face, 9, 55, 55).Im, 836, 722) canvas.DrawImage(imgfactory.Rotate(face, 9, 55, 55).Image(), 836, 722)
canvas.DrawImage(back, 0, 0) canvas.DrawImage(back, 0, 0)
canvas.SetColor(color.White) canvas.SetColor(color.White)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
@ -978,12 +977,12 @@ func backToWork(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "BackToWork.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 25, 0, 0).Im, 0, 0, 56, 32).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 25, 0, 0).Image(), 0, 0, 56, 32).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// coupon 兑换券 // coupon 兑换券
@ -1016,7 +1015,7 @@ func coupon(cc *context, args ...string) (string, error) {
canvas := gg.NewContext(500, 355) canvas := gg.NewContext(500, 355)
canvas.DrawImage(back, 0, 0) canvas.DrawImage(back, 0, 0)
canvas.Rotate(gg.Radians(-22)) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -1057,12 +1056,12 @@ func distracted(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "Distracted.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := im.InsertUp(imgs[0].Im, 0, 0, 140, 320).InsertUp(imgs[1].Im, 0, 0, 0, 0).Im imgnrgba := im.InsertUp(imgs[0].Image(), 0, 0, 140, 320).InsertUp(imgs[1].Image(), 0, 0, 0, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// throw 扔 // throw 扔
@ -1089,8 +1088,8 @@ func throw(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertUpC(img.Rotate(face, float64(rand.Intn(360)), 143, 143).Im, 0, 0, 86, 249).Im imgnrgba := imgs[0].InsertUpC(imgfactory.Rotate(face, float64(rand.Intn(360)), 143, 143).Image(), 0, 0, 86, 249).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// 远离 // 远离
@ -1113,12 +1112,12 @@ func yuanli(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "yuanli.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 420, 420, 45, 90).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 420, 420, 45, 90).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// 不是你老婆 // 不是你老婆
@ -1141,12 +1140,12 @@ func nowife(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "nowife.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 400, 400, 112, 81).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 400, 400, 112, 81).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// youer 你老婆 // youer 你老婆
@ -1175,7 +1174,7 @@ func youer(cc *context, args ...string) (string, error) {
} }
canvas := gg.NewContext(690, 690) canvas := gg.NewContext(690, 690)
canvas.DrawImage(back, 0, 0) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -1222,7 +1221,7 @@ func xiaotianshi(cc *context, args ...string) (string, error) {
} }
canvas := gg.NewContext(522, 665) canvas := gg.NewContext(522, 665)
canvas.DrawImage(back, 0, 0) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -1263,12 +1262,12 @@ func neko(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "neko.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 450, 450, 0, 170).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 0, 0, 0).Image(), 450, 450, 0, 170).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// 给我变 // 给我变
@ -1292,12 +1291,12 @@ func bian(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "bian.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 380, 380, 225, -20).Im imgnrgba := imgs[0].InsertBottom(imgfactory.Rotate(im.Image(), 0, 0, 0).Image(), 380, 380, 225, -20).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// van 玩一下 // van 玩一下
@ -1326,7 +1325,7 @@ func van(cc *context, args ...string) (string, error) {
} }
canvas := gg.NewContext(522, 665) canvas := gg.NewContext(522, 665)
canvas.DrawImage(back, 0, 0) 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) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {
@ -1367,12 +1366,12 @@ func eihei(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "eihei.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 450, 450, 121, 162).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 450, 450, 121, 162).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// fanfa 犯法 // fanfa 犯法
@ -1399,9 +1398,9 @@ func fanfa(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
m1 := img.Rotate(face, 45, 110, 110) m1 := imgfactory.Rotate(face, 45, 110, 110)
imgnrgba := imgs[0].InsertUp(m1.Im, 0, 0, 125, 360).Im imgnrgba := imgs[0].InsertUp(m1.Image(), 0, 0, 125, 360).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// huai 怀 // huai 怀
@ -1424,12 +1423,12 @@ func huai(cc *context, args ...string) (string, error) {
return "", err return "", err
} }
name := cc.usrdir + "huai.png" 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 { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(im.Im, 640, 640, 0, 0).Im imgnrgba := imgs[0].InsertBottom(im.Image(), 640, 640, 0, 0).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// haowan 好玩 // haowan 好玩
@ -1456,8 +1455,8 @@ func haowan(cc *context, args ...string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
imgnrgba := imgs[0].InsertBottom(face, 90, 90, 321, 172).Im imgnrgba := imgs[0].InsertBottom(face, 90, 90, 321, 172).Image()
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba) return "file:///" + name, imgfactory.SavePNG2Path(name, imgnrgba)
} }
// mengbi 蒙蔽 // mengbi 蒙蔽
@ -1486,8 +1485,8 @@ func mengbi(cc *context, args ...string) (string, error) {
} }
canvas := gg.NewContext(1080, 1080) canvas := gg.NewContext(1080, 1080)
canvas.DrawImage(back, 0, 0) canvas.DrawImage(back, 0, 0)
canvas.DrawImage(img.Size(face, 100, 100).Im, 392, 460) canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 392, 460)
canvas.DrawImage(img.Size(face, 100, 100).Im, 606, 443) canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 606, 443)
canvas.SetColor(color.Black) canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true) _, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil { if err != nil {

View File

@ -9,6 +9,7 @@ import (
"time" "time"
wyy "github.com/FloatTech/AnimeAPI/neteasemusic" wyy "github.com/FloatTech/AnimeAPI/neteasemusic"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
@ -19,7 +20,6 @@ import (
// 图片输出 // 图片输出
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/process" "github.com/FloatTech/floatbox/process"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
@ -446,11 +446,14 @@ func init() {
canvas.DrawString("当前设置的默认歌单为: "+dlist.Name, 80, float64(85+20*j)-h) 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 { if id := ctx.SendChain(message.ImageBytes(data)); id.ID() == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了")) ctx.SendChain(message.Text("ERROR: 可能被风控了"))
} }
cl()
}) })
engine.OnPrefix("设置猜歌默认歌单", zero.AdminPermission).SetBlock(true). engine.OnPrefix("设置猜歌默认歌单", zero.AdminPermission).SetBlock(true).
Handle(func(ctx *zero.Ctx) { Handle(func(ctx *zero.Ctx) {

View File

@ -10,6 +10,7 @@ import (
"time" "time"
"github.com/FloatTech/floatbox/math" "github.com/FloatTech/floatbox/math"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
control "github.com/FloatTech/zbputils/control" control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
@ -23,7 +24,6 @@ import (
// 画图 // 画图
fcext "github.com/FloatTech/floatbox/ctxext" fcext "github.com/FloatTech/floatbox/ctxext"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/zbputils/img/text" "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(slicename(info[2], canvas), 800, float64(260+50*i)-h)
canvas.DrawString("("+info[3]+")", 1150, 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)) ctx.SendChain(message.ImageBytes(data))
cl()
}) })
engine.OnRegex(`^重置(所有|本群|/d+)?花名册$`, zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser). engine.OnRegex(`^重置(所有|本群|/d+)?花名册$`, zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser).
Handle(func(ctx *zero.Ctx) { Handle(func(ctx *zero.Ctx) {

View File

@ -8,6 +8,7 @@ import (
"strings" "strings"
"github.com/FloatTech/floatbox/math" "github.com/FloatTech/floatbox/math"
"github.com/FloatTech/imgfactory"
control "github.com/FloatTech/zbputils/control" control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
@ -15,7 +16,6 @@ import (
// 画图 // 画图
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
@ -189,9 +189,12 @@ func init() {
canvas.Fill() canvas.Fill()
i++ 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)) ctx.SendChain(message.ImageBytes(data))
cl()
}) })
engine.OnFullMatch("好感度数据整理", zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser). engine.OnFullMatch("好感度数据整理", zero.SuperUserPermission, getdb).SetBlock(true).Limit(ctxext.LimitByUser).

View File

@ -14,13 +14,12 @@ import (
"github.com/FloatTech/AnimeAPI/qzone" "github.com/FloatTech/AnimeAPI/qzone"
"github.com/FloatTech/floatbox/binary" "github.com/FloatTech/floatbox/binary"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
@ -324,7 +323,7 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) {
if err != nil { if err != nil {
return return
} }
back := img.Size(faceImg, backX, backY).Circle(0).Im back := imgfactory.Size(faceImg, backX, backY).Circle(0).Image()
m := message.ParseMessageFromString(raw) m := message.ParseMessageFromString(raw)
maxHeight += margin maxHeight += margin
@ -349,7 +348,7 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) {
} }
canvas.DrawImage(back, margin, maxHeight) canvas.DrawImage(back, margin, maxHeight)
if msgImg.Bounds().Dx() > 500 { 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) canvas.DrawImage(msgImg, 2*margin+backX, maxHeight)
if 3*margin+backX+msgImg.Bounds().Dx() > maxWidth { 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) im := canvas.Image().(*image.RGBA)
nim := im.SubImage(image.Rect(0, 0, maxWidth, maxHeight)) nim := im.SubImage(image.Rect(0, 0, maxWidth, maxHeight))
return writer.ToBase64(nim) return imgfactory.ToBase64(nim)
} }

View File

@ -20,15 +20,14 @@ import (
"github.com/FloatTech/AnimeAPI/nsfw" "github.com/FloatTech/AnimeAPI/nsfw"
"github.com/FloatTech/AnimeAPI/scale" "github.com/FloatTech/AnimeAPI/scale"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/floatbox/binary" "github.com/FloatTech/floatbox/binary"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/img"
) )
func init() { func init() {
@ -81,10 +80,10 @@ func init() {
x := im.Bounds().Size().X * 512 / px x := im.Bounds().Size().X * 512 / px
y := im.Bounds().Size().Y * 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)) 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() w := binary.SelectWriter()
defer binary.PutWriter(w) defer binary.PutWriter(w)
_, err = writer.WriteTo(im, w) _, err = imgfactory.WriteTo(im, w)
if err != nil { if err != nil {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return

View File

@ -12,14 +12,13 @@ import (
"github.com/FloatTech/AnimeAPI/bilibili" "github.com/FloatTech/AnimeAPI/bilibili"
"github.com/FloatTech/AnimeAPI/wallet" "github.com/FloatTech/AnimeAPI/wallet"
"github.com/FloatTech/floatbox/file" "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/floatbox/process" "github.com/FloatTech/floatbox/process"
"github.com/FloatTech/floatbox/web" "github.com/FloatTech/floatbox/web"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
"github.com/FloatTech/imgfactory"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/img"
"github.com/FloatTech/zbputils/img/text" "github.com/FloatTech/zbputils/img/text"
"github.com/golang/freetype" "github.com/golang/freetype"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@ -121,7 +120,7 @@ func init() {
return return
} }
// 避免图片过大,最大 1280*720 // 避免图片过大,最大 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 := gg.NewContext(back.Bounds().Size().X, int(float64(back.Bounds().Size().Y)*1.7))
canvas.SetRGB(1, 1, 1) canvas.SetRGB(1, 1, 1)
canvas.Clear() canvas.Clear()
@ -171,12 +170,15 @@ func init() {
f, err := os.Create(drawedFile) f, err := os.Create(drawedFile)
if err != nil { if err != nil {
log.Errorln("[score]", err) log.Errorln("[score]", err)
data, cl := writer.ToBytes(canvas.Image()) data, err := imgfactory.ToBytes(canvas.Image())
ctx.SendChain(message.ImageBytes(data)) if err != nil {
cl() log.Errorln("[score]", err)
return return
} }
_, err = writer.WriteTo(canvas.Image(), f) ctx.SendChain(message.ImageBytes(data))
return
}
_, err = imgfactory.WriteTo(canvas.Image(), f)
_ = f.Close() _ = f.Close()
if err != nil { if err != nil {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))

View File

@ -13,10 +13,10 @@ import (
"time" "time"
"github.com/FloatTech/AnimeAPI/tl" "github.com/FloatTech/AnimeAPI/tl"
"github.com/FloatTech/imgfactory"
"github.com/FloatTech/floatbox/binary" "github.com/FloatTech/floatbox/binary"
fcext "github.com/FloatTech/floatbox/ctxext" fcext "github.com/FloatTech/floatbox/ctxext"
"github.com/FloatTech/floatbox/img/writer"
"github.com/FloatTech/gg" "github.com/FloatTech/gg"
ctrl "github.com/FloatTech/zbpctrl" ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control"
@ -135,14 +135,13 @@ func init() {
return return
} }
game := newWordleGame(target) game := newWordleGame(target)
_, img, cl, _ := game("") _, img, _ := game("")
ctx.Send( ctx.Send(
message.ReplyWithMessage(ctx.Event.MessageID, message.ReplyWithMessage(ctx.Event.MessageID,
message.ImageBytes(img), message.ImageBytes(img),
message.Text("你有", class+1, "次机会猜出单词,单词长度为", class, ",请发送单词"), message.Text("你有", class+1, "次机会猜出单词,单词长度为", class, ",请发送单词"),
), ),
) )
cl()
var next *zero.FutureEvent var next *zero.FutureEvent
if ctx.State["regex_matched"].([]string)[1] == "个人" { if ctx.State["regex_matched"].([]string)[1] == "个人" {
next = zero.NewFutureEvent("message", 999, false, zero.RegexRule(fmt.Sprintf(`^([A-Z]|[a-z]){%d}$`, class)), 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: case c := <-recv:
tick.Reset(105 * time.Second) tick.Reset(105 * time.Second)
after.Reset(120 * 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 { switch {
case win: case win:
tick.Stop() tick.Stop()
@ -181,7 +180,6 @@ func init() {
message.Text("太棒了,你猜出来了!答案是: ", target, "(", tt, ")"), message.Text("太棒了,你猜出来了!答案是: ", target, "(", tt, ")"),
), ),
) )
cl()
return return
case err == errTimesRunOut: case err == errTimesRunOut:
tick.Stop() tick.Stop()
@ -192,7 +190,6 @@ func init() {
message.Text("游戏结束...答案是: ", target, "(", tt, ")"), message.Text("游戏结束...答案是: ", target, "(", tt, ")"),
), ),
) )
cl()
return return
case err == errLengthNotEnough: case err == errLengthNotEnough:
ctx.Send( ctx.Send(
@ -212,17 +209,16 @@ func init() {
message.ImageBytes(img), 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) var class = len(target)
record := make([]string, 0, len(target)+1) 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 != "" { if s != "" {
s = strings.ToLower(s) s = strings.ToLower(s)
if target == s { if target == s {
@ -241,6 +237,7 @@ func newWordleGame(target string) func(string) (bool, []byte, func(), error) {
record = append(record, s) record = append(record, s)
if len(record) >= cap(record) { if len(record) >= cap(record) {
err = errTimesRunOut err = errTimesRunOut
return
} }
} }
var side = 20 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 return
} }
} }