多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### gocaptcha 一个简单的Go语言实现的验证码 ### 图片实例 ![](https://img.kancloud.cn/95/ac/95acc74ff0a08719c4994bcb659ff520_300x100.jpg) ### 简介 基于Golang实现的图片验证码生成库,可以实现随机字母个数,随机直线,随机噪点等。可以设置任意多字体,每个验证码随机选一种字体展示。 ### 实例 #### 使用: ``` go get github.com/lifei6671/gocaptcha/ ``` #### 使用的类库 ``` go get github.com/golang/freetype go get github.com/golang/freetype/truetype go get golang.org/x/image ``` ### 代码 具体实例可以查看example目录,有生成的验证码图片。 ```go package main import ( "fmt" "html/template" "log" "net/http" "github.com/lifei6671/gocaptcha" ) const ( dx = 150 dy = 50 ) func main() { // 加载所有字体 err := gocaptcha.ReadFonts("fonts", ".ttf") if err != nil { fmt.Println(err) return } http.HandleFunc("/", Index) http.HandleFunc("/get/", Get) fmt.Println("服务已启动...") err = http.ListenAndServe(":8800", nil) if err != nil { log.Fatal(err) } } func Index(w http.ResponseWriter, r *http.Request) { t, err := template.ParseFiles("tpl/index.html") if err != nil { log.Fatal(err) } _ = t.Execute(w, nil) } func Get(w http.ResponseWriter, r *http.Request) { captchaImage := gocaptcha.NewCaptchaImage(dx, dy, gocaptcha.RandLightColor()) err := captchaImage.DrawNoise(gocaptcha.CaptchaComplexLower). DrawTextNoise(gocaptcha.CaptchaComplexLower). DrawText(gocaptcha.RandText(4)). DrawBorder(gocaptcha.ColorToRGB(0x17A7A7A)). DrawSineLine().Error if err != nil { fmt.Println(err) } _ = captchaImage.SaveImage(w, gocaptcha.ImageFormatJpeg) } ```