You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
7.1 KiB
240 lines
7.1 KiB
2 years ago
|
package base64Captcha
|
||
|
|
||
|
import (
|
||
|
"math/rand"
|
||
|
|
||
|
"github.com/golang/freetype/truetype"
|
||
|
)
|
||
|
|
||
|
var fontsSimple = DefaultEmbeddedFonts.LoadFontsByNames([]string{
|
||
|
"fonts/3Dumb.ttf",
|
||
|
"fonts/ApothecaryFont.ttf",
|
||
|
"fonts/Comismsh.ttf",
|
||
|
"fonts/DENNEthree-dee.ttf",
|
||
|
"fonts/DeborahFancyDress.ttf",
|
||
|
"fonts/Flim-Flam.ttf",
|
||
|
"fonts/RitaSmith.ttf",
|
||
|
"fonts/actionj.ttf",
|
||
|
"fonts/chromohv.ttf",
|
||
|
})
|
||
|
|
||
|
//var fontemoji = loadFontByName("fonts/seguiemj.ttf")
|
||
|
var fontsAll = append(fontsSimple, fontChinese)
|
||
|
var fontChinese = DefaultEmbeddedFonts.LoadFontByName("fonts/wqy-microhei.ttc")
|
||
|
|
||
|
//randFontFrom choose random font family.选择随机的字体
|
||
|
func randFontFrom(fonts []*truetype.Font) *truetype.Font {
|
||
|
fontCount := len(fonts)
|
||
|
|
||
|
if fontCount == 0 {
|
||
|
//loading default fonts
|
||
|
fonts = fontsAll
|
||
|
fontCount = len(fontsAll)
|
||
|
}
|
||
|
index := rand.Intn(fontCount)
|
||
|
return fonts[index]
|
||
|
}
|
||
|
|
||
|
var digitFontData = [][]byte{
|
||
|
{ // 0
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
},
|
||
|
{ // 1
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
},
|
||
|
{ // 2
|
||
|
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
},
|
||
|
{ // 3
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
},
|
||
|
{ // 4
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
},
|
||
|
{ // 5
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
},
|
||
|
{ // 6
|
||
|
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
|
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0,
|
||
|
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0,
|
||
|
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
},
|
||
|
{ // 7
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
|
1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
|
||
|
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
|
||
|
0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||
|
},
|
||
|
{ // 8
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0,
|
||
|
0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
|
||
|
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
},
|
||
|
{ // 9
|
||
|
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
|
||
|
0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
|
||
|
0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
|
||
|
0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
|
||
|
0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
|
||
|
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
|
||
|
},
|
||
|
}
|