🚀 优化字体加载

This commit is contained in:
源文雨
2023-02-10 14:59:27 +08:00
parent ca89f01f7d
commit 2e51c9e9c3
11 changed files with 70 additions and 71 deletions

View File

@@ -187,11 +187,11 @@ func init() {
canvas.DrawImage(back, 0, 0)
}
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
}
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(data, fontSize); err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
@@ -324,11 +324,11 @@ func init() {
}
canvas := gg.NewContext(100, 100)
fontSize := 50.0
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
}
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(data, fontSize); err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
@@ -347,7 +347,7 @@ func init() {
canvas.SetColor(color.White)
canvas.Clear()
canvas.SetColor(color.Black)
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(data, fontSize); err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}

View File

@@ -76,11 +76,11 @@ func tagurl(name, u string) (im image.Image, st *sorttags, err error) {
st = newsorttags(tags)
sort.Sort(st)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
boldfd, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return
}
_, err = file.GetLazyData(text.ConsolasFontFile, control.Md5File, true)
consfd, err := file.GetLazyData(text.ConsolasFontFile, control.Md5File, true)
if err != nil {
return
}
@@ -100,13 +100,13 @@ func tagurl(name, u string) (im image.Image, st *sorttags, err error) {
canvas.SetRGB(1, 1, 1)
canvas.Clear()
canvas.DrawImage(img, 0, 0)
if err = canvas.LoadFontFace(text.BoldFontFile, float64(img.Bounds().Size().X)*0.1); err != nil {
if err = canvas.ParseFontFace(boldfd, float64(img.Bounds().Size().X)*0.1); err != nil {
return
}
canvas.SetRGB(0, 0, 0)
canvas.DrawString(name, float64(img.Bounds().Size().X)*0.02, float64(img.Bounds().Size().Y)+float64(img.Bounds().Size().X)*0.1)
i := float64(img.Bounds().Size().Y) + float64(img.Bounds().Size().X)*0.2
if err = canvas.LoadFontFace(text.ConsolasFontFile, float64(img.Bounds().Size().X)*0.04); err != nil {
if err = canvas.ParseFontFace(consfd, float64(img.Bounds().Size().X)*0.04); err != nil {
return
}
rate := float64(img.Bounds().Size().X) * 0.04

View File

@@ -32,8 +32,6 @@ const (
images = "data/Fortune/"
// 基础文件位置
omikujson = "data/Fortune/text.json"
// 字体文件位置
font = "data/Font/sakura.ttf"
// 生成图缓存位置
cache = images + "cache/"
)
@@ -100,11 +98,12 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err))
return false
}
_, err = file.GetLazyData(font, control.Md5File, true)
fontdata, err := file.GetLazyData("data/Font/sakura.ttf", control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return false
}
ctx.State["fontdata"] = fontdata
return true
},
)).Limit(ctxext.LimitByGroup).SetBlock(true).
@@ -150,7 +149,7 @@ func init() {
if err != nil {
return err
}
_, err = draw(background, title, text, f)
_, err = draw(background, ctx.State["fontdata"].([]byte), title, text, f)
_ = f.Close()
return err
}, ctxext.Send(ctx), ctxext.GetMessage(ctx))
@@ -189,19 +188,19 @@ func randimage(path string, ctx *zero.Ctx) (im image.Image, index int, err error
// @param title 签名
// @param text 签文
// @return 错误信息
func draw(back image.Image, title, txt string, f io.Writer) (int64, error) {
func draw(back image.Image, fontdata []byte, title, txt string, f io.Writer) (int64, error) {
canvas := gg.NewContext(back.Bounds().Size().Y, back.Bounds().Size().X)
canvas.DrawImage(back, 0, 0)
// 写标题
canvas.SetRGB(1, 1, 1)
if err := canvas.LoadFontFace(font, 45); err != nil {
if err := canvas.ParseFontFace(fontdata, 45); err != nil {
return -1, err
}
sw, _ := canvas.MeasureString(title)
canvas.DrawString(title, 140-sw/2, 112)
// 写正文
canvas.SetRGB(0, 0, 0)
if err := canvas.LoadFontFace(font, 23); err != nil {
if err := canvas.ParseFontFace(fontdata, 23); err != nil {
return -1, err
}
tw, th := canvas.MeasureString("测")

View File

@@ -1416,11 +1416,11 @@ func alwaysDoGif(cc *context, value ...string) (string, error) {
}
canvas := gg.NewContext(500, 600)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
err = canvas.LoadFontFace(text.BoldFontFile, 40)
err = canvas.ParseFontFace(data, 40)
if err != nil {
return "", err
}
@@ -1438,7 +1438,7 @@ func alwaysDoGif(cc *context, value ...string) (string, error) {
canvas := gg.NewContext(500, 600)
canvas.DrawImage(f.Image(), 0, 0)
canvas.SetColor(color.Black)
_ = canvas.LoadFontFace(text.BoldFontFile, 40)
// _ = canvas.ParseFontFace(data, 40)
canvas.DrawString(arg, 280-l, 560)
canvas.DrawImage(imgfactory.Size(f.Image(), 90, 90).Image(), 280, 505)
canvas.DrawString("吗", 370, 560)

View File

@@ -277,11 +277,11 @@ func anyasuki(cc *context, args ...string) (string, error) {
canvas.DrawImage(imgfactory.Size(face, 347, 267).Image(), 82, 53)
canvas.DrawImage(back, 0, 0)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 30); err != nil {
if err = canvas.ParseFontFace(data, 30); err != nil {
return "", err
}
if args[0] == "" {
@@ -323,11 +323,11 @@ func alwaysLike(cc *context, args ...string) (string, error) {
canvas.DrawImage(back, 0, 0)
canvas.DrawImage(imgfactory.Size(face, 380, 380).Image(), 44, 74)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 56); err != nil {
if err = canvas.ParseFontFace(data, 56); err != nil {
return "", err
}
if args[0] == "" {
@@ -437,11 +437,11 @@ func universal(cc *context, args ...string) (string, error) {
canvas := gg.NewContext(500, 550)
canvas.DrawImage(imgfactory.Size(face, 500, 500).Image(), 0, 0)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 40); err != nil {
if err = canvas.ParseFontFace(data, 40); err != nil {
return "", err
}
if args[0] == "" {
@@ -488,11 +488,11 @@ func interview(cc *context, args ...string) (string, error) {
canvas.DrawImage(huaji, 376, 50)
canvas.DrawImage(microphone, 300, 50)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 40); err != nil {
if err = canvas.ParseFontFace(data, 40); err != nil {
return "", err
}
if args[0] == "" {
@@ -646,11 +646,11 @@ func playGame(cc *context, args ...string) (string, error) {
canvas.DrawImage(imgfactory.Rotate(face, 10, 225, 160).Image(), 161, 117)
canvas.DrawImage(back, 0, 0)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 40); err != nil {
if err = canvas.ParseFontFace(data, 40); err != nil {
return "", err
}
if args[0] == "" {
@@ -776,11 +776,11 @@ func safeSense(cc *context, args ...string) (string, error) {
canvas.DrawImage(back, 0, 0)
canvas.DrawImage(imgfactory.Size(face, 215, 343).Image(), 215, 135)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 30); err != nil {
if err = canvas.ParseFontFace(data, 30); err != nil {
return "", err
}
if args[0] == "" {
@@ -938,11 +938,11 @@ func makeFriend(cc *context, args ...string) (string, error) {
canvas.DrawImage(imgfactory.Rotate(face, 9, 55, 55).Image(), 836, 722)
canvas.DrawImage(back, 0, 0)
canvas.SetColor(color.White)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 20); err != nil {
if err = canvas.ParseFontFace(data, 20); err != nil {
return "", err
}
if args[0] == "" {
@@ -1017,11 +1017,11 @@ func coupon(cc *context, args ...string) (string, error) {
canvas.Rotate(gg.Radians(-22))
canvas.DrawImage(imgfactory.Size(face, 60, 60).Image(), 100, 163)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 30); err != nil {
if err = canvas.ParseFontFace(data, 30); err != nil {
return "", err
}
if args[0] == "" {
@@ -1176,11 +1176,11 @@ func youer(cc *context, args ...string) (string, error) {
canvas.DrawImage(back, 0, 0)
canvas.DrawImage(imgfactory.Size(tou, 350, 350).Image(), 55, 165)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 56); err != nil {
if err = canvas.ParseFontFace(data, 56); err != nil {
return "", err
}
if args[0] == "" {
@@ -1223,11 +1223,11 @@ func xiaotianshi(cc *context, args ...string) (string, error) {
canvas.DrawImage(back, 0, 0)
canvas.DrawImage(imgfactory.Size(face, 480, 480).Image(), 20, 80)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 35); err != nil {
if err = canvas.ParseFontFace(data, 35); err != nil {
return "", err
}
if args[0] == "" {
@@ -1327,11 +1327,11 @@ func van(cc *context, args ...string) (string, error) {
canvas.DrawImage(back, 0, 0)
canvas.DrawImage(imgfactory.Size(face, 480, 480).Image(), 20, 80)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 35); err != nil {
if err = canvas.ParseFontFace(data, 35); err != nil {
return "", err
}
if args[0] == "" {
@@ -1488,11 +1488,11 @@ func mengbi(cc *context, args ...string) (string, error) {
canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 392, 460)
canvas.DrawImage(imgfactory.Size(face, 100, 100).Image(), 606, 443)
canvas.SetColor(color.Black)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
return "", err
}
if err = canvas.LoadFontFace(text.BoldFontFile, 80); err != nil {
if err = canvas.ParseFontFace(data, 80); err != nil {
return "", err
}
if args[0] == "" {

View File

@@ -406,18 +406,18 @@ func init() {
canvas.SetRGB(1, 1, 1) // 白色
canvas.Clear()
/***********下载字体,可以注销掉***********/
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
boldfd, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text(serviceErr, err))
}
_, err = file.GetLazyData(text.FontFile, control.Md5File, true)
fd, err := file.GetLazyData(text.FontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text(serviceErr, err))
}
/***********设置字体颜色为黑色***********/
canvas.SetRGB(0, 0, 0)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(boldfd, fontSize); err != nil {
ctx.SendChain(message.Text(serviceErr, err))
return
}
@@ -426,7 +426,7 @@ func init() {
canvas.DrawString("序号\t\t歌单名\t\t歌曲数量\t\t网易云歌单ID", 20, 50-h) // 放置在中间位置
canvas.DrawString("——————————————————————", 20, 70-h)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.FontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(fd, fontSize); err != nil {
ctx.SendChain(message.Text(serviceErr, err))
return
}

View File

@@ -235,14 +235,14 @@ func init() {
canvas.SetRGB(1, 1, 1) // 白色
canvas.Clear()
/***********下载字体,可以注销掉***********/
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("[qqwife]ERROR: ", err))
}
/***********设置字体颜色为黑色***********/
canvas.SetRGB(0, 0, 0)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize*2); err != nil {
if err = canvas.ParseFontFace(data, fontSize*2); err != nil {
ctx.SendChain(message.Text("[qqwife]ERROR: ", err))
return
}
@@ -251,7 +251,7 @@ func init() {
canvas.DrawString("群老婆列表", (1500-sl)/2, 160-h) // 放置在中间位置
canvas.DrawString("————————————————————", 0, 250-h)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(data, fontSize); err != nil {
ctx.SendChain(message.Text("[qqwife]ERROR: ", err))
return
}
@@ -263,7 +263,7 @@ func init() {
canvas.DrawString(slicename(info[2], canvas), 800, float64(260+50*i)-h)
canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h)
}
data, err := imgfactory.ToBytes(canvas.Image())
data, err = imgfactory.ToBytes(canvas.Image())
if err != nil {
ctx.SendChain(message.Text("[qqwife]ERROR: ", err))
return

View File

@@ -140,14 +140,14 @@ func init() {
canvas.SetRGB(1, 1, 1) // 白色
canvas.Clear()
/***********下载字体***********/
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("[ERROR]:ERROR: ", err))
}
/***********设置字体颜色为黑色***********/
canvas.SetRGB(0, 0, 0)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize*2); err != nil {
if err = canvas.ParseFontFace(data, fontSize*2); err != nil {
ctx.SendChain(message.Text("[ERROR]:ERROR: ", err))
return
}
@@ -156,7 +156,7 @@ func init() {
canvas.DrawString("你的好感度排行列表", (1100-sl)/2, 100) // 放置在中间位置
canvas.DrawString("————————————————————", 0, 160)
/***********设置字体大小,并获取字体高度用来定位***********/
if err = canvas.LoadFontFace(text.BoldFontFile, fontSize); err != nil {
if err = canvas.ParseFontFace(data, fontSize); err != nil {
ctx.SendChain(message.Text("[ERROR]:ERROR: ", err))
return
}
@@ -189,7 +189,7 @@ func init() {
canvas.Fill()
i++
}
data, err := imgfactory.ToBytes(canvas.Image())
data, err = imgfactory.ToBytes(canvas.Image())
if err != nil {
ctx.SendChain(message.Text("[qqwife]ERROR: ", err))
return

View File

@@ -127,12 +127,12 @@ func init() {
canvas.DrawImage(back, 0, 0)
monthWord := now.Format("01/02")
hourWord := getHourWord(now)
_, err = file.GetLazyData(text.BoldFontFile, control.Md5File, true)
data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
if err = canvas.LoadFontFace(text.BoldFontFile, float64(back.Bounds().Size().X)*0.1); err != nil {
if err = canvas.ParseFontFace(data, float64(back.Bounds().Size().X)*0.1); err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
@@ -140,12 +140,12 @@ func init() {
canvas.DrawString(hourWord, float64(back.Bounds().Size().X)*0.1, float64(back.Bounds().Size().Y)*1.2)
canvas.DrawString(monthWord, float64(back.Bounds().Size().X)*0.6, float64(back.Bounds().Size().Y)*1.2)
nickName := ctx.CardOrNickName(uid)
_, err = file.GetLazyData(text.FontFile, control.Md5File, true)
data, err = file.GetLazyData(text.FontFile, control.Md5File, true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
if err = canvas.LoadFontFace(text.FontFile, float64(back.Bounds().Size().X)*0.04); err != nil {
if err = canvas.ParseFontFace(data, float64(back.Bounds().Size().X)*0.04); err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}