Skip to content
hanguofeng edited this page Sep 7, 2013 · 1 revision

配置

调用

1.生成WordManager

WordManager用于加载用户自定义的词典或字符集
	
支持两类:
	
* 词典:每行一个中文或英文词,UTF-8不含BOM格式
* 字符集:每行一个字,可以为字母、数字或汉字,从美观角度,汉字和非汉字不建议混用

path := "F:\\go\\src\\github.com\\hanguofeng\\gocaptcha\\data\\cn_phrases"
wordmgr := new(WordManager)
wordmgr.LoadFromFile(path)

2.生成细节配置

captchaConfig, imageConfig, filterConfig := loadConfig()
func loadConfig() (*CaptchaConfig, *ImageConfig, *FilterConfig) {

	//生成CaptchaConfig
	captchaConfig := new(CaptchaConfig)
	captchaConfig.CaptchaLifeTime = 10 * time.Second //验证码从生成字符串到用户输入验证的有效周期
	captchaConfig.GcProbability = 1                  //过期验证码的回收概率
	captchaConfig.GcDivisor = 100                    //过期验证码的回收概率(GcProbability/GcDivisor)

	//生成ImageConfig
	imageConfig := new(ImageConfig)
	imageConfig.fontFiles = []string{
		"c:/windows/fonts/SIMLI.TTF",
		"c:/windows/fonts/simfang.ttf",
		"c:/windows/fonts/SIMYOU.TTF",
		"c:/windows/fonts/msyh.TTF",
		"c:/windows/fonts/simhei.ttf",
		"c:/windows/fonts/simkai.ttf"}		//验证码的字体文件,会每个字随机的使用这些字体
	imageConfig.fontSize = 26				//字号
	imageConfig.height = 40					//生成的图片高度(px)
	imageConfig.width = 120					//生成的图片宽度(px)

	//生成FilterConfig
	filterConfig := new(FilterConfig)
	filterConfig.enableNoiseLine = true		//启用干扰线
	filterConfig.enableNoisePoint = true	//启用噪点
	filterConfig.enableStrike = true		//启用波形干扰
	filterConfig.strikeLineNum = 3			//波形干扰数目
	filterConfig.noisePointNum = 30			//噪点数目
	filterConfig.noiseLineNum = 10			//干扰线数目

	return captchaConfig, imageConfig, filterConfig
}

3.生成验证码处理对象

captcha := CreateCaptcha(wordmgr, captchaConfig, imageConfig, filterConfig)

4.获得一个验证key

//4为验证码内文字长度,如加载的是词典而非字符集的数据文件,则此参数无效(但仍需传递)
key := captcha.GetKey(4)	

5.生成验证码图片

img, err := captcha.GetImage(key)

6.展现图片

用你需要的方式将img(类型为image.Image)输出给用户即可

7.验证字符串

将第4步生成的key和用户输入一起传入进行比较

captcha.Verify(key, "用户输入")