diff --git a/pkg/common/utils/captcha.go b/pkg/common/utils/captcha.go index fffffa4..4f71730 100644 --- a/pkg/common/utils/captcha.go +++ b/pkg/common/utils/captcha.go @@ -3,7 +3,6 @@ package utils import ( "bytes" "encoding/base64" - "errors" "fmt" "image" "image/color" @@ -19,9 +18,8 @@ import ( ) const ( - ImgURL = "https://cdns.fontree.cn/fonchain-main/test/image/artwork/config/slidCode_%d.jpg" - ImgPath = "./code/%d.jpg" //本地路径,暂不使用 - ImgPathPng = "./code/%d.png" //本地路径,暂不使用 + ImgURL = "https://cdns.fontree.cn/fonchain-main/test/image/artwork/config/slidCode_%d.jpg" + ImgPath = "./code/%d.jpg" //本地路径,暂不使用 ) // 生成指定范围内的随机数 @@ -31,71 +29,41 @@ func GetNonceByRange(start, end int) int { } // 获取缓冲图片,可能是通过URL或本地路径 -func GetBufferedImage(place int, canvasWidth, canvasHeight int) (draw.Image, error) { - startTime := time.Now() - fmt.Println("") - fmt.Println("") - fmt.Println("") - fmt.Println("1---") +func GetBufferedImage(place int) (image.Image, error) { nonce := GetNonceByRange(1, 10) var imgURL string - //place = 0 // 注意,这边的图片现在只使用url图片 - if place == 1 { - fmt.Println("3-1", time.Now().Sub(startTime)) + place = 0 // 注意,这边的图片现在只使用url图片 + + if place == 0 { imgURL = fmt.Sprintf(ImgURL, nonce) resp, err := http.Get(imgURL) if err != nil { return nil, err } - - fmt.Println("3-2", time.Now().Sub(startTime)) defer resp.Body.Close() - img, ff, err := image.Decode(resp.Body) - fmt.Println("----", ff) + img, _, err := image.Decode(resp.Body) if err != nil { return nil, err } - - fmt.Println("3-3", time.Now().Sub(startTime)) - - canvasImage := ImageResize(img, canvasWidth, canvasHeight).(*image.RGBA) - - return canvasImage, nil - } else { //从redis中获取 - - file, err := os.Open(fmt.Sprintf(ImgPathPng, nonce)) - - fmt.Println("4-1", time.Now().Sub(startTime)) + return img, nil + } else { + file, err := os.Open(fmt.Sprintf(ImgPath, nonce)) if err != nil { return nil, err } defer file.Close() - - //img, format, err := image.Decode(file) - img, err := png.Decode(file) - format := "1" - fmt.Println("", err) - //img, err := jpeg.Decode(file) - fmt.Println("4-1-1", time.Now().Sub(startTime), err) - - fmt.Println("4-2", time.Now().Sub(startTime), format) + img, _, err := image.Decode(file) if err != nil { return nil, err } - - ss := ImageResize(img, canvasWidth, canvasHeight) - canvasImage := ss.(*image.RGBA) - - return canvasImage, nil + return img, nil } - - return nil, errors.New("类型错误") } // 调整图片大小 func ImageResize(bufferedImage image.Image, width, height int) image.Image { - return resize.Resize(uint(width), uint(height), bufferedImage, resize.Bilinear) + return resize.Resize(uint(width), uint(height), bufferedImage, resize.Lanczos3) } // CutByTemplate 根据模板裁剪图像 // 生成圆角正方形的滑块图像 diff --git a/pkg/service/account.go b/pkg/service/account.go index af58615..f418ac4 100644 --- a/pkg/service/account.go +++ b/pkg/service/account.go @@ -757,8 +757,8 @@ func (a *AccountProvider) GenerateSliderCaptcha(_ context.Context, in *account.G //blockRadius := captcha.BlockRadius place := captcha.Place - canvasImage, _ := utils.GetBufferedImage(place, canvasWidth, canvasHeight) - //canvasImage := utils.ImageResize(img, canvasWidth, canvasHeight).(*image.RGBA) + img, _ := utils.GetBufferedImage(place) + canvasImage := utils.ImageResize(img, canvasWidth, canvasHeight).(*image.RGBA) blockX := utils.GetNonceByRange(blockWidth, canvasWidth-blockWidth-10) blockY := utils.GetNonceByRange(10, canvasHeight-blockHeight+1) blockImage := image.NewRGBA(image.Rect(0, 0, blockWidth, blockHeight))