### 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)
}
```