|
@@ -51,9 +51,9 @@ func RandLightColor(n int) color.RGBA {
|
|
|
return color.RGBA{R: uint8(red), G: uint8(green), B: uint8(blue), A: a}
|
|
|
}
|
|
|
|
|
|
-func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
|
|
|
- str := RandText(4)
|
|
|
- log.Println(str)
|
|
|
+func Get(sess *httpsession.Session, checkCode string, w http.ResponseWriter, r *http.Request) (err error) {
|
|
|
+ code := RandText(4)
|
|
|
+ log.Println(code)
|
|
|
cacheKey := fmt.Sprintf("captcha_times_%s", sess.Id())
|
|
|
var (
|
|
|
// 计次数
|
|
@@ -70,18 +70,18 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
|
|
|
captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
|
|
|
DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(42), rn).
|
|
|
DrawLine(NewBeeline(), RandDeepColor()).
|
|
|
- DrawText(NewTwistTextDrawer(63, 15, 0.04), str)
|
|
|
+ DrawText(NewTwistTextDrawer(63, 15, 0.04), code)
|
|
|
} else if times < 6 {
|
|
|
captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
|
|
|
DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(43), rn).
|
|
|
DrawLine(NewBeeline(), RandDeepColor()).
|
|
|
- DrawText(NewTwistTextDrawer(65, 14, 0.03), str).
|
|
|
+ DrawText(NewTwistTextDrawer(65, 14, 0.03), code).
|
|
|
DrawBlur(NewGaussianBlur(), 2, 0.15)
|
|
|
} else if times < 10 {
|
|
|
captchaImage = captchaImage.DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
|
|
|
DrawNoise(NoiseDensityHigh, NewTextNoiseDrawer(45), rn).
|
|
|
DrawLine(NewBeeline(), RandDeepColor()).
|
|
|
- DrawText(NewTwistTextDrawer(66, 18, 0.04), str).
|
|
|
+ DrawText(NewTwistTextDrawer(66, 18, 0.04), code).
|
|
|
DrawLine(NewBeeline(), RandDeepColor()).
|
|
|
DrawBlur(NewGaussianBlur(), 2, 0.41)
|
|
|
|
|
@@ -90,7 +90,7 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
|
|
|
DrawNoise(NoiseDensityLower, NewPointNoiseDrawer(), rn).
|
|
|
DrawLine(NewBezier3DLine(), RandLightColor(rn)).
|
|
|
DrawLine(NewBeeline(), RandDeepColor()).
|
|
|
- DrawText(NewTwistTextDrawer(66, 18, 0.04), str).
|
|
|
+ DrawText(NewTwistTextDrawer(66, 18, 0.04), code).
|
|
|
DrawBlur(NewGaussianBlur(), 2, 0.44)
|
|
|
}
|
|
|
if times == 0 {
|
|
@@ -101,8 +101,9 @@ func Get(sess *httpsession.Session, w http.ResponseWriter, r *http.Request) {
|
|
|
redis.Put("other", cacheKey, times, int(ttl))
|
|
|
if captchaImage.Error != nil {
|
|
|
log.Println(captchaImage.Error)
|
|
|
+ err = captchaImage.Error
|
|
|
+ return
|
|
|
}
|
|
|
-
|
|
|
- _ = captchaImage.Encode(w, ImageFormatJpeg)
|
|
|
-
|
|
|
+ sess.Set(checkCode, code)
|
|
|
+ return captchaImage.Encode(w, ImageFormatJpeg)
|
|
|
}
|