mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 13:59:39 +08:00
优化花名册名字切片报错问题 (#263)
This commit is contained in:
parent
668418c48a
commit
f768081849
@ -5,7 +5,6 @@ import (
|
|||||||
"math/rand"
|
"math/rand"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -181,30 +180,23 @@ func (sql *婚姻登记) 花名册(gid int64) (list [][4]string, number int, err
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func slicename(name string) (resultname string) {
|
func slicename(name string, canvas *gg.Context) (resultname string) {
|
||||||
if len(name) <= 21 { // 如果长度在宽度之内直接输出
|
usermane := []rune(name) //将每个字符单独放置
|
||||||
resultname = name
|
widthlen := 0
|
||||||
return
|
numberlen := 0
|
||||||
}
|
|
||||||
usermane := []rune(name) // 转utf8形式
|
|
||||||
usermanelen := 0 // 总长度
|
|
||||||
numberlen := 0 // 字个数
|
|
||||||
var singlestr = " ,.;:'|!()[]" // 单宽度长度的字符集
|
|
||||||
for i, v := range usermane {
|
for i, v := range usermane {
|
||||||
if usermanelen > 18 { // 6个汉字或者9个字符
|
width, _ := canvas.MeasureString(string(v)) //获取单个字符的宽度
|
||||||
|
widthlen += int(width)
|
||||||
|
if widthlen > 350 {
|
||||||
|
break //总宽度不能超过350
|
||||||
|
}
|
||||||
numberlen = i
|
numberlen = i
|
||||||
break
|
|
||||||
}
|
}
|
||||||
switch {
|
if widthlen > 350 {
|
||||||
case v/10000 >= 1:
|
resultname = string(usermane[:numberlen-1]) + "......" // 名字切片
|
||||||
usermanelen += 3
|
} else {
|
||||||
case strings.Contains(singlestr, string(v)):
|
resultname = name
|
||||||
usermanelen++
|
|
||||||
default:
|
|
||||||
usermanelen += 2
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
resultname = string(usermane[:numberlen-2]) + "......" // 名字切片
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -567,10 +559,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
_, h = canvas.MeasureString("焯")
|
_, h = canvas.MeasureString("焯")
|
||||||
for i, info := range list {
|
for i, info := range list {
|
||||||
canvas.DrawString(slicename(info[0]), 0, float64(260+50*i)-h)
|
canvas.DrawString(slicename(info[0], canvas), 0, float64(260+50*i)-h)
|
||||||
canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h)
|
canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h)
|
||||||
canvas.DrawString("←→", 700, float64(260+50*i)-h)
|
canvas.DrawString("←→", 700, float64(260+50*i)-h)
|
||||||
canvas.DrawString(slicename(info[2]), 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, cl := writer.ToBytes(canvas.Image())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user