添加签到,引入分数机制 (#101)

* feat:添加签到功能,引入分数机制

* feat:修lint

* fix:加宽

* fix:修lint和加锁

* fix:解决冲突

* fix:二次判断
This commit is contained in:
himawari
2022-01-09 23:21:36 +08:00
committed by GitHub
parent d8991ec016
commit 2ed25c6991
8 changed files with 377 additions and 20 deletions

View File

@@ -18,16 +18,21 @@ import (
const (
whitespace = "\t\n\r\x0b\x0c"
fontpath = "data/Font/"
fontfile = fontpath + "regular.ttf"
// FontPath 通用字体路径
FontPath = "data/Font/"
// FontFile 苹方字体
FontFile = FontPath + "regular.ttf"
// BoldFontFile 粗体苹方字体
BoldFontFile = FontPath + "regular-bold.ttf"
)
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(fontpath, 0755)
_, _ = file.GetLazyData(fontfile, false, true)
_ = os.MkdirAll(FontPath, 0755)
_, _ = file.GetLazyData(FontFile, false, true)
_, _ = file.GetLazyData(BoldFontFile, false, true)
}()
}
@@ -35,19 +40,14 @@ func init() {
func RenderToBase64(text string, width, fontSize int) (base64Bytes []byte, err error) {
canvas, err := Render(text, width, fontSize)
if err != nil {
log.Println("err:", err)
log.Println("[txt2img]:", err)
return nil, err
}
// 转成 base64
buffer := new(bytes.Buffer)
encoder := base64.NewEncoder(base64.StdEncoding, buffer)
var opt jpeg.Options
opt.Quality = 70
if err = jpeg.Encode(encoder, canvas.Image(), &opt); err != nil {
base64Bytes, err = CanvasToBase64(canvas)
if err != nil {
log.Println("[txt2img]:", err)
return nil, err
}
encoder.Close()
base64Bytes = buffer.Bytes()
return
}
@@ -74,12 +74,12 @@ func Render(text string, width, fontSize int) (canvas *gg.Context, err error) {
}
}
canvas = gg.NewContext((fontSize+3)*width/2, (len(buff)+2)*fontSize)
canvas = gg.NewContext((fontSize+4)*width/2, (len(buff)+2)*fontSize)
canvas.SetRGB(1, 1, 1)
canvas.Clear()
canvas.SetRGB(0, 0, 0)
if err = canvas.LoadFontFace(fontfile, float64(fontSize)); err != nil {
log.Println("err:", err)
if err = canvas.LoadFontFace(FontFile, float64(fontSize)); err != nil {
log.Println("[txt2img]:", err)
return nil, err
}
for i, v := range buff {
@@ -89,3 +89,17 @@ func Render(text string, width, fontSize int) (canvas *gg.Context, err error) {
}
return
}
// CanvasToBase64 gg内容转为base64
func CanvasToBase64(canvas *gg.Context) (base64Bytes []byte, err error) {
buffer := new(bytes.Buffer)
encoder := base64.NewEncoder(base64.StdEncoding, buffer)
var opt jpeg.Options
opt.Quality = 70
if err = jpeg.Encode(encoder, canvas.Image(), &opt); err != nil {
return nil, err
}
encoder.Close()
base64Bytes = buffer.Bytes()
return
}