一个简单的Go语言实现的验证码
1.1.2. 图片实例1.1.3. 简介基于Golang实现的图片验证码生成库,可以实现随机字母个数,随机直线,随机噪点等。可以设置任意多字体,每个验证码随机选一种字体展示。
1.1.4. 实例使用: go get github.com/lifei6671/gocaptcha/使用的类库 go get github.com/golang/freetype
go get github.com/golang/freetype/truetype
go get golang.org/x/image1.1.5. 代码由于b站编辑器的原因代码不能很好的显示,如果需要代码可以去我的博客查看:http://www.5lmh.com/%E5%85%B6%E4%BB%96/%E9%AA%8C%E8%AF%81%E7%A0%81.html
具体实例可以查看example目录,有生成的验证码图片。
package mainimport (
"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)}