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.
239 lines
7.1 KiB
239 lines
7.1 KiB
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, |
|
}, |
|
}
|
|
|