1. 验证码

1.1.1. gocaptcha

一个简单的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/image

1.1.5. 代码

具体实例可以查看example目录,有生成的验证码图片。

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

results matching ""

    No results matching ""