diff --git a/plugin_scale/main.go b/plugin_scale/main.go index 070bd93f..36acbaf2 100644 --- a/plugin_scale/main.go +++ b/plugin_scale/main.go @@ -2,6 +2,8 @@ package scale import ( + "bytes" + "image" "os" "strconv" "time" @@ -11,6 +13,7 @@ import ( "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" + "github.com/FloatTech/zbputils/web" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" @@ -29,6 +32,13 @@ func init() { Handle(func(ctx *zero.Ctx) { url := ctx.State["image_url"].([]string) if len(url) > 0 { + var datachan chan []byte + var errsub error + go func() { + var d []byte + d, errsub = web.GetData(url[0]) + datachan <- d + }() ctx.SendChain(message.Text("少女祈祷中...")) p, err := nsfw.Classify(url[0]) if err != nil { @@ -39,8 +49,22 @@ func init() { ctx.SendChain(message.Text("请发送二次元图片!")) return } + data := <-datachan + if errsub != nil { + ctx.SendChain(message.Text("ERROR:", errsub)) + return + } + im, _, err := image.Decode(bytes.NewReader(data)) + if err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return + } + if im.Bounds().Size().X > 1080 || im.Bounds().Size().Y > 1080 { + ctx.SendChain(message.Text("图片过大!")) + return + } paras := ctx.State["scale_paras"].([2]int) - data, err := scale.Get(url[0], paras[0], paras[1], 2) + data, err = scale.Get(url[0], paras[0], paras[1], 2) if err != nil { ctx.SendChain(message.Text("ERROR:", err)) return