mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-20 22:40:23 +08:00
增加gif制图,菜单没写 (#363)
* Update context.go * Update gif.go * 🎨 改进代码样式 * Update png.go * Update run.go * 🎨 改进代码样式 * 修正素材地址 * Update run.go * 呃,,,没改完整 * 继续修!!! * Update png.go * 🎨 改进代码样式 * Update gif.go * 🎨 改进代码样式 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
0e29010897
commit
caa163a879
@ -20,7 +20,7 @@ func dlchan(name string, s *string, wg *sync.WaitGroup, exit func(error)) {
|
|||||||
target := datapath + `materials/` + name
|
target := datapath + `materials/` + name
|
||||||
var err error
|
var err error
|
||||||
if file.IsNotExist(target) {
|
if file.IsNotExist(target) {
|
||||||
err = file.DownloadTo(`https://gitcode.net/anto_july/imagematerials/-/raw/main/`+name, target, true)
|
err = file.DownloadTo(`https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, target, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exit(err)
|
exit(err)
|
||||||
return
|
return
|
||||||
@ -35,7 +35,7 @@ func dlchan(name string, s *string, wg *sync.WaitGroup, exit func(error)) {
|
|||||||
func dlblock(name string) (string, error) {
|
func dlblock(name string) (string, error) {
|
||||||
target := datapath + `materials/` + name
|
target := datapath + `materials/` + name
|
||||||
if file.IsNotExist(target) {
|
if file.IsNotExist(target) {
|
||||||
err := file.DownloadTo(`https://gitcode.net/u011570312/imagematerials/-/raw/main/`+name, target, true)
|
err := file.DownloadTo(`https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, target, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -891,3 +891,268 @@ func turn(cc *context, value ...string) (string, error) {
|
|||||||
}
|
}
|
||||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, turn))
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, turn))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// taiguan 抬棺
|
||||||
|
func taiguan(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "taiguan.gif"
|
||||||
|
c := dlrange("taiguan", 20, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(0, 0)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 20)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
taiguan := []*image.NRGBA{
|
||||||
|
imgs[0].InsertUp(tou, 85, 85, 180, 65).Im,
|
||||||
|
imgs[1].InsertUp(tou, 85, 85, 180, 65).Im,
|
||||||
|
imgs[2].InsertUp(tou, 85, 85, 180, 65).Im,
|
||||||
|
imgs[3].InsertUp(tou, 85, 85, 180, 65).Im,
|
||||||
|
imgs[4].InsertUp(tou, 85, 85, 177, 65).Im,
|
||||||
|
imgs[5].InsertUp(tou, 85, 85, 175, 65).Im,
|
||||||
|
imgs[6].InsertUp(tou, 85, 85, 173, 65).Im,
|
||||||
|
imgs[7].InsertUp(tou, 85, 85, 171, 65).Im,
|
||||||
|
imgs[8].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[9].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[10].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[11].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[12].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[13].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[14].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[15].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[16].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[17].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[18].InsertUp(tou, 85, 85, 170, 65).Im,
|
||||||
|
imgs[19].InsertUp(tou, 85, 85, 175, 65).Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, taiguan))
|
||||||
|
}
|
||||||
|
|
||||||
|
// zou 揍
|
||||||
|
func zou(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "zou.gif"
|
||||||
|
c := dlrange("zou", 3, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(100, 100)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou2, err := cc.getLogo2(100, 100)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 3)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
zou := []*image.NRGBA{
|
||||||
|
imgs[0].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 100, 45).Im,
|
||||||
|
imgs[1].InsertUp(tou, 40, 40, 98, 138).InsertUp(tou2, 55, 55, 101, 45).Im,
|
||||||
|
imgs[2].InsertUp(tou, 40, 40, 89, 140).InsertUp(tou2, 55, 55, 99, 40).Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, zou))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ci 吞
|
||||||
|
func ci(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "ci.gif"
|
||||||
|
c := dlrange("ci", 26, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(100, 100)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 26)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
ci := []*image.NRGBA{
|
||||||
|
imgs[0].InsertBottom(tou, 25, 25, 25, 57).Im,
|
||||||
|
imgs[1].InsertBottom(tou, 25, 25, 27, 58).Im,
|
||||||
|
imgs[2].InsertBottom(tou, 25, 25, 28, 57).Im,
|
||||||
|
imgs[3].InsertBottom(tou, 25, 25, 30, 57).Im,
|
||||||
|
imgs[4].InsertBottom(tou, 25, 25, 30, 58).Im,
|
||||||
|
imgs[5].InsertBottom(tou, 25, 25, 30, 59).Im,
|
||||||
|
imgs[6].Im,
|
||||||
|
imgs[7].Im,
|
||||||
|
imgs[8].Im,
|
||||||
|
imgs[9].Im,
|
||||||
|
imgs[10].Im,
|
||||||
|
imgs[11].Im,
|
||||||
|
imgs[12].Im,
|
||||||
|
imgs[13].Im,
|
||||||
|
imgs[14].Im,
|
||||||
|
imgs[15].Im,
|
||||||
|
imgs[16].Im,
|
||||||
|
imgs[17].Im,
|
||||||
|
imgs[18].Im,
|
||||||
|
imgs[19].Im,
|
||||||
|
imgs[20].Im,
|
||||||
|
imgs[21].Im,
|
||||||
|
imgs[22].Im,
|
||||||
|
imgs[23].Im,
|
||||||
|
imgs[24].Im,
|
||||||
|
imgs[25].Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ci))
|
||||||
|
}
|
||||||
|
|
||||||
|
// worship 膜拜
|
||||||
|
func worship(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "worship.gif"
|
||||||
|
c := dlrange("worship", 9, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
face, err := gg.LoadImage(cc.headimgsdir[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 9)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
worship := []*image.NRGBA{
|
||||||
|
imgs[0].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[1].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[2].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[3].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[4].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[5].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[6].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[7].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
imgs[8].InsertBottom(face, 140, 140, 0, 0).Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, worship))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2ceng 2蹭
|
||||||
|
func ceng2(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "ceng2.gif"
|
||||||
|
c := dlrange("ceng2", 4, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(100, 100)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 4)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
ceng2 := []*image.NRGBA{
|
||||||
|
imgs[0].InsertBottom(tou, 175, 175, 78, 263).Im,
|
||||||
|
imgs[1].InsertBottom(tou, 175, 175, 78, 263).Im,
|
||||||
|
imgs[2].InsertBottom(tou, 175, 175, 78, 263).Im,
|
||||||
|
imgs[3].InsertBottom(tou, 175, 175, 78, 263).Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, ceng2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// dun 炖
|
||||||
|
func dun(cc *context, value ...string) (string, error) {
|
||||||
|
_ = value
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
var m sync.Mutex
|
||||||
|
name := cc.usrdir + "dun.gif"
|
||||||
|
c := dlrange("dun", 5, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(100, 100)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgs, err := loadFirstFrames(c, 5)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
dun := []*image.NRGBA{
|
||||||
|
imgs[0].InsertBottom(tou, 80, 80, 85, 45).Im,
|
||||||
|
imgs[1].InsertBottom(tou, 80, 80, 85, 45).Im,
|
||||||
|
imgs[2].InsertBottom(tou, 80, 80, 85, 45).Im,
|
||||||
|
imgs[3].InsertBottom(tou, 80, 80, 85, 45).Im,
|
||||||
|
imgs[4].InsertBottom(tou, 80, 80, 85, 45).Im,
|
||||||
|
}
|
||||||
|
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, dun))
|
||||||
|
}
|
||||||
|
|||||||
@ -162,6 +162,7 @@ func convolve3x3(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// rotate 旋转,带参数暂时不用
|
// rotate 旋转,带参数暂时不用
|
||||||
func rotate(cc *context, args ...string) (string, error) {
|
func rotate(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
name := cc.usrdir + "Rotate.png"
|
name := cc.usrdir + "Rotate.png"
|
||||||
// 加载图片
|
// 加载图片
|
||||||
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
|
||||||
@ -175,6 +176,7 @@ func rotate(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// deformation 变形,带参数暂时不用
|
// deformation 变形,带参数暂时不用
|
||||||
func deformation(cc *context, args ...string) (string, error) {
|
func deformation(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
name := cc.usrdir + "Deformation.png"
|
name := cc.usrdir + "Deformation.png"
|
||||||
// 加载图片
|
// 加载图片
|
||||||
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
|
||||||
@ -251,6 +253,7 @@ func marriage(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// anyasuki 阿尼亚喜欢
|
// anyasuki 阿尼亚喜欢
|
||||||
func anyasuki(cc *context, args ...string) (string, error) {
|
func anyasuki(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -296,6 +299,7 @@ func anyasuki(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// alwaysLike 我永远喜欢
|
// alwaysLike 我永远喜欢
|
||||||
func alwaysLike(cc *context, args ...string) (string, error) {
|
func alwaysLike(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -319,7 +323,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, 341, 341).Im, 44, 74)
|
canvas.DrawImage(img.Size(face, 380, 380).Im, 44, 74)
|
||||||
canvas.SetColor(color.Black)
|
canvas.SetColor(color.Black)
|
||||||
_, err = file.GetLazyData(text.BoldFontFile, true)
|
_, err = file.GetLazyData(text.BoldFontFile, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -426,6 +430,7 @@ func dontTouch(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// universal 万能表情 空白表情
|
// universal 万能表情 空白表情
|
||||||
func universal(cc *context, args ...string) (string, error) {
|
func universal(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
name := cc.usrdir + "Universal.png"
|
name := cc.usrdir + "Universal.png"
|
||||||
face, err := gg.LoadImage(cc.headimgsdir[0])
|
face, err := gg.LoadImage(cc.headimgsdir[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -454,6 +459,7 @@ func universal(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// interview 采访
|
// interview 采访
|
||||||
func interview(cc *context, args ...string) (string, error) {
|
func interview(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -616,6 +622,7 @@ func perfect(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// playGame 玩游戏
|
// playGame 玩游戏
|
||||||
func playGame(cc *context, args ...string) (string, error) {
|
func playGame(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -745,6 +752,7 @@ func prpr(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// safeSense 安全感
|
// safeSense 安全感
|
||||||
func safeSense(cc *context, args ...string) (string, error) {
|
func safeSense(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -904,6 +912,7 @@ func whyatme(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// makeFriend 交个朋友
|
// makeFriend 交个朋友
|
||||||
func makeFriend(cc *context, args ...string) (string, error) {
|
func makeFriend(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -980,6 +989,7 @@ func backToWork(cc *context, args ...string) (string, error) {
|
|||||||
|
|
||||||
// coupon 兑换券
|
// coupon 兑换券
|
||||||
func coupon(cc *context, args ...string) (string, error) {
|
func coupon(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var m sync.Mutex
|
var m sync.Mutex
|
||||||
var err error
|
var err error
|
||||||
@ -1083,3 +1093,298 @@ func throw(cc *context, args ...string) (string, error) {
|
|||||||
imgnrgba := imgs[0].InsertUpC(img.Rotate(face, float64(rand.Intn(360)), 143, 143).Im, 0, 0, 86, 249).Im
|
imgnrgba := imgs[0].InsertUpC(img.Rotate(face, float64(rand.Intn(360)), 143, 143).Im, 0, 0, 86, 249).Im
|
||||||
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 远离
|
||||||
|
func yuanli(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("yuanli", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
imgs, err := loadFirstFrames(c, 1)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
name := cc.usrdir + "yuanli.png"
|
||||||
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 534, 493)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgnrgba := imgs[0].InsertBottom(im.Im, 420, 420, 45, 90).Im
|
||||||
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 不是你老婆
|
||||||
|
func nowife(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("nowife", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
imgs, err := loadFirstFrames(c, 1)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
name := cc.usrdir + "nowife.png"
|
||||||
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 534, 493)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgnrgba := imgs[0].InsertBottom(im.Im, 400, 400, 112, 81).Im
|
||||||
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
|
}
|
||||||
|
|
||||||
|
// youer 你老婆
|
||||||
|
func youer(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("youer", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
name := cc.usrdir + "youer.png"
|
||||||
|
back, err := gg.LoadImage(c[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
tou, err := cc.getLogo(120, 120)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
canvas := gg.NewContext(690, 690)
|
||||||
|
canvas.DrawImage(back, 0, 0)
|
||||||
|
canvas.DrawImage(img.Size(tou, 350, 350).Im, 55, 165)
|
||||||
|
canvas.SetColor(color.Black)
|
||||||
|
_, err = file.GetLazyData(text.BoldFontFile, true)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err = canvas.LoadFontFace(text.BoldFontFile, 56); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if args[0] == "" {
|
||||||
|
args[0] = "老婆真棒"
|
||||||
|
}
|
||||||
|
args[0] = "你的" + args[0]
|
||||||
|
l, _ := canvas.MeasureString(args[0])
|
||||||
|
if l > 830 {
|
||||||
|
return "", errors.New("文字消息太长了")
|
||||||
|
}
|
||||||
|
canvas.DrawString(args[0], (830-l)/3.0, 630)
|
||||||
|
return "file:///" + name, canvas.SavePNG(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// xiaotiamshi 小天使
|
||||||
|
func xiaotianshi(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("xiaotianshi", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
name := cc.usrdir + "xiaotianshi.png"
|
||||||
|
back, err := gg.LoadImage(c[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
face, err := gg.LoadImage(cc.headimgsdir[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
canvas := gg.NewContext(522, 665)
|
||||||
|
canvas.DrawImage(back, 0, 0)
|
||||||
|
canvas.DrawImage(img.Size(face, 480, 480).Im, 20, 80)
|
||||||
|
canvas.SetColor(color.Black)
|
||||||
|
_, err = file.GetLazyData(text.BoldFontFile, true)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err = canvas.LoadFontFace(text.BoldFontFile, 35); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if args[0] == "" {
|
||||||
|
args[0] = "我老婆"
|
||||||
|
}
|
||||||
|
args[0] = "请问你们看到" + args[0] + "了吗?"
|
||||||
|
l, _ := canvas.MeasureString(args[0])
|
||||||
|
if l > 830 {
|
||||||
|
return "", errors.New("文字消息太长了")
|
||||||
|
}
|
||||||
|
canvas.DrawString(args[0], (830-l)/10, 50)
|
||||||
|
return "file:///" + name, canvas.SavePNG(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 不要再看这些了
|
||||||
|
func neko(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("neko", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
imgs, err := loadFirstFrames(c, 1)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
name := cc.usrdir + "neko.png"
|
||||||
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 712, 949)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 450, 450, 0, 170).Im
|
||||||
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 给我变
|
||||||
|
func bian(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("bian", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
imgs, err := loadFirstFrames(c, 1)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
name := cc.usrdir + "bian.png"
|
||||||
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 640, 550)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgnrgba := imgs[0].InsertBottom(img.Rotate(im.Im, 0, 0, 0).Im, 380, 380, 225, -20).Im
|
||||||
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
|
}
|
||||||
|
|
||||||
|
// van 玩一下
|
||||||
|
func van(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("van", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
name := cc.usrdir + "van.png"
|
||||||
|
back, err := gg.LoadImage(c[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
face, err := gg.LoadImage(cc.headimgsdir[0])
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
canvas := gg.NewContext(522, 665)
|
||||||
|
canvas.DrawImage(back, 0, 0)
|
||||||
|
canvas.DrawImage(img.Size(face, 480, 480).Im, 20, 80)
|
||||||
|
canvas.SetColor(color.Black)
|
||||||
|
_, err = file.GetLazyData(text.BoldFontFile, true)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err = canvas.LoadFontFace(text.BoldFontFile, 35); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if args[0] == "" {
|
||||||
|
args[0] = "RBQ"
|
||||||
|
}
|
||||||
|
args[0] = "请问你们看到" + args[0] + "了吗?"
|
||||||
|
l, _ := canvas.MeasureString(args[0])
|
||||||
|
if l > 830 {
|
||||||
|
return "", errors.New("文字消息太长了")
|
||||||
|
}
|
||||||
|
canvas.DrawString(args[0], (830-l)/10, 50)
|
||||||
|
return "file:///" + name, canvas.SavePNG(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// eihei 诶嘿
|
||||||
|
func eihei(cc *context, args ...string) (string, error) {
|
||||||
|
_ = args
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var m sync.Mutex
|
||||||
|
var err error
|
||||||
|
c := dlrange("eihei", 1, &wg, func(e error) {
|
||||||
|
m.Lock()
|
||||||
|
err = e
|
||||||
|
m.Unlock()
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
imgs, err := loadFirstFrames(c, 1)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
name := cc.usrdir + "eihei.png"
|
||||||
|
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 690, 690)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
imgnrgba := imgs[0].InsertBottom(im.Im, 450, 450, 121, 162).Im
|
||||||
|
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||||
|
}
|
||||||
|
|||||||
@ -17,6 +17,20 @@ var (
|
|||||||
cmd = make([]string, 0)
|
cmd = make([]string, 0)
|
||||||
datapath string
|
datapath string
|
||||||
cmdMap = map[string]func(cc *context, args ...string) (string, error){
|
cmdMap = map[string]func(cc *context, args ...string) (string, error){
|
||||||
|
"炖": dun,
|
||||||
|
"2蹭": ceng2,
|
||||||
|
"诶嘿": eihei,
|
||||||
|
"膜拜": worship,
|
||||||
|
"吞": ci,
|
||||||
|
"揍": zou,
|
||||||
|
"给我变": bian,
|
||||||
|
"玩一下": van,
|
||||||
|
"不要看": neko,
|
||||||
|
"小天使": xiaotianshi,
|
||||||
|
"你的": youer,
|
||||||
|
"我老婆": nowife,
|
||||||
|
"远离": yuanli,
|
||||||
|
"抬棺": taiguan,
|
||||||
"搓": cuo,
|
"搓": cuo,
|
||||||
"冲": xqe,
|
"冲": xqe,
|
||||||
"摸": mo,
|
"摸": mo,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user