場景:
在開發中,我們經常會遇到圖片驗證碼的代碼開發。我們需要在前端訪問我們的驗證碼接口時,能夠生成圖片驗證碼,並且驗證碼內容隨機生成!其實很簡單,我們可以用現成的”輪子“來實現我們的功能。
我們用到的是 github.com/afocus/captcha,它為我們提供了很好的方法,可以讓我們自由的設置圖片的大小、圖片透明度、圖片中字體等,有興趣了解的朋有,可以查看官方文檔了解學習,這里我就不多介紹了,貼出我自己的代碼,僅供大家參考
func main() {
cap := captcha.New()
//通過句柄調用 字體文件
if err := cap.SetFont("你字體文件的路徑"); err != nil {
panic(err.Error())
}
//設置圖片大小
cap.SetSize(91,50)
//設置感染強度
cap.SetDisturbance(captcha.NORMAL)
cap.SetFrontColor(color.RGBA{255, 255, 255, 255})
cap.SetBkgColor(color.RGBA{255, 0, 0, 255}, color.RGBA{0, 0, 255, 255}, color.RGBA{0, 153, 0, 255})
http.HandleFunc("/r", func(w http.ResponseWriter, r *http.Request) {
img,str := cap.Create(4,captcha.ALL)
png.Encode(w,img)
fmt.Println(str)
})
http.HandleFunc("/c", func(w http.ResponseWriter, r *http.Request) {
str := r.URL.RawQuery
img := cap.CreateCustom(str)
png.Encode(w,img)
})
http.ListenAndServe(":9090",nil)
}
我這里是通過socket的方式進行開發測試,能夠看到更好更方便的看到效果,希望對大家有所幫助!