From 9d88c7c467f8d93af4aab9ba0b6d6c01c2ffc546 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期四, 20 八月 2020 20:35:30 +0800
Subject: [PATCH] add get buckets contrl

---
 controllers/fileController.go |   67 ++++++++++++++++++++-------------
 1 files changed, 40 insertions(+), 27 deletions(-)

diff --git a/controllers/fileController.go b/controllers/fileController.go
index e2495b9..1ef8a2f 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -5,6 +5,7 @@
 	"basic.com/fileServer/WeedFSClient.git"
 	esApi "basic.com/pubsub/esutil.git"
 	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/godraw.git"
 	"basic.com/valib/logger.git"
 	"bytes"
 	"encoding/base64"
@@ -12,7 +13,6 @@
 	"errors"
 	"fmt"
 	"github.com/gin-gonic/gin"
-	"gocv.io/x/gocv"
 	"image"
 	"image/color"
 	"image/jpeg"
@@ -71,7 +71,7 @@
 	filename := header.Filename
 	var result = make(map[string]string)
 	if picType == "1" {
-		fileNameOnly, _, err, faceFeature := uploadFileReturnAddr(file, filename, "", false)
+		_, _, err, faceFeature, faceUrlPath := uploadFileReturnAddr(file, filename, "", false)
 		if err != nil {
 			if err.Error() == "NotFeatureFindError" {
 				util.ResponseFormat(c, code.NotFeatureFindError, filename)
@@ -80,7 +80,7 @@
 			}
 			return
 		}
-		result["picUrl"] = fileNameOnly
+		result["picUrl"] = faceUrlPath
 		result["faceFeature"] = faceFeature
 	} else {
 		localConf, err2 := cache.GetServerInfo()
@@ -148,7 +148,11 @@
 		urlArr := make([]string,0)
 		for _,r := range faceArr {
 			rcFace := r.Pos.RcFace
-			cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
+			cutFaceImgData,cutErr := util.SubCutImg(pI, rcFace, 20)
+			if cutErr != nil {
+				logger.Debug("util.SubCutImg err:", cutErr)
+				continue
+			}
 			weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "FaceUrl", cutFaceImgData)
 			if e == nil{
 				faceExtractedMap[weedFilePath] = FaceExtract{
@@ -171,19 +175,19 @@
 }
 
 func drawPolygonOnImg(i *protomsg.Image,faceArr *[]*protomsg.ResultFaceDetect) (*[]byte,error) {
-	rook, _ := gocv.NewMatFromBytes(int(i.Height), int(i.Width), gocv.MatTypeCV8UC3, i.Data)
-	defer rook.Close()
-	//yellow := color.RGBA{255, 255, 0, 0}
+	img,err := godraw.ToImage(i.Data, int(i.Width), int(i.Height))
+	if err != nil {
+		return nil,err
+	}
 	red := color.RGBA{255, 0, 0, 0}
 	for _,faceResult := range *faceArr {
-		left := int(faceResult.Pos.RcFace.Left)
-		top := int(faceResult.Pos.RcFace.Top)
-		right := int(faceResult.Pos.RcFace.Right)
-		bottom := int(faceResult.Pos.RcFace.Bottom)
-		gocv.Rectangle(&rook, image.Rect(left,top,right,bottom), red, 1)
+		util.DrawRect(img.(*image.RGBA),int(faceResult.Pos.RcFace.Left),int(faceResult.Pos.RcFace.Top),int(faceResult.Pos.RcFace.Right),
+			int(faceResult.Pos.RcFace.Bottom), red)
 	}
-	fData,err := gocv.IMEncode(".jpg", rook)
-	return &fData,err
+
+	quantity := 100
+	jpgData, err := godraw.ImageToJpeg(img, &quantity)
+	return &jpgData,err
 }
 
 type CompareResult struct {
@@ -413,7 +417,7 @@
 	faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*60)
 	if err ==nil && len(faceArr) ==1 {
 		rcFace := faceArr[0].Pos.RcFace
-		cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
+		cutFaceImgData,_ := util.SubCutImg(pI, rcFace, 20)
 		weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "FaceUrl", cutFaceImgData)
 		if e == nil{
 			faceExtractedMap[weedFilePath] = FaceExtract{
@@ -492,6 +496,9 @@
 					return
 				}
 				faceB = decodeF
+			} else {
+				util.ResponseFormat(c, code.ComError, "鏈潯浜鸿劯鎶撴媿鐗瑰緛涓虹┖锛岃妫�鏌�")
+				return
 			}
 		}
 
@@ -628,8 +635,10 @@
 			arg.Collection = searchBody.Collection
 			arg.AnalyServerId = localConf.ServerId
 
+			ct := time.Now()
 			captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes)
-			logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds))
+			ut := time.Since(ct)
+			logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds), "useTime:", ut)
 			if captureIds !=nil {
 				var aResult protomsg.SdkCompareResult
 				aList := getTwiceSearchResult(co, &captureIds, searchBody)
@@ -761,7 +770,7 @@
 			break
 		}
 		//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
-		cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
+		cutFaceImgData,_ := util.SubCutImg(pI, rcFace, 20)
 		weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "testCutFace", cutFaceImgData)
 		if e !=nil{
 			util.ResponseFormat(c,code.ComError,"鏂囦欢涓婁紶澶辫触")
@@ -779,24 +788,24 @@
 log.Fatalln(err)
 }*/
 
-func uploadFileReturnAddr(file multipart.File, filename string, tableId string, add2Db bool) (string, map[string]interface{}, error, string) {
+func uploadFileReturnAddr(file multipart.File, filename string, tableId string, add2Db bool) (string, map[string]interface{}, error, string, string) {
 	defer file.Close()
 	// weedfs 涓婁紶
 	fileBytes, err := ioutil.ReadAll(file)
 	if err !=nil {
-		return "",nil,err,""
+		return "",nil,err,"",""
 	}
 
 	//灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰�
 	var faceBase64=""
 	faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5)
 	if faceArr ==nil {
-		return "",nil,errors.New("NotFeatureFindError"),""
+		return "",nil,errors.New("NotFeatureFindError"),"",""
 	}
 	var rcFace *protomsg.Rect
 	if err ==nil && len(faceArr) >0 {
 		if len(faceArr) >1 {
-			return "",nil, errors.New("TooManyFaces"),""
+			return "",nil, errors.New("TooManyFaces"),"",""
 		}
 		for _,r := range faceArr {
 			//鎷垮埌浜鸿劯鐨勫潗鏍�
@@ -809,12 +818,16 @@
 	localConf, err2 := cache.GetServerInfo()
 	if err2 !=nil || localConf.WebPicIp == "" {
 		logger.Debug("localConfig is wrong!!!")
-		return "",nil,err2,""
+		return "",nil,err2,"",""
 	}
 	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent"
 	//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
 	t1 := time.Now()
-	cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
+	cutFaceImgData,cutErr := util.SubCutImg(pI, rcFace, 20)
+	if cutErr != nil {
+		logger.Debug("util.SubCutImg err:", cutErr)
+		return "", nil, cutErr,"",""
+	}
 	logger.Debug("SubImg鐢ㄦ椂锛�", time.Since(t1))
 	t1 = time.Now()
 	weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, cutFaceImgData)
@@ -822,7 +835,7 @@
 	t1 = time.Now()
 	if e != nil {
 		logger.Debug("WeedFSClient.UploadFile err:", e)
-		return "", nil, e,""
+		return "", nil, e,"",""
 	}
 
 	ext := path.Ext(filename)
@@ -840,8 +853,8 @@
 		result = addDbPerson(dbperson)
 	}
 
-	logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1))
-	return fileNameOnly, result, nil,faceBase64
+	logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1), "result:", result)
+	return fileNameOnly, result, nil,faceBase64, weedFilePath
 
 }
 
@@ -898,7 +911,7 @@
 				lock.Unlock()
 				return
 			}
-			field, _, err1,_ := uploadFileReturnAddr(file, filename, tableId, true)
+			field, _, err1,_,_ := uploadFileReturnAddr(file, filename, tableId, true)
 			lock.Lock()
 			if err1 != nil || field == "" {
 				if err1 !=nil && err1.Error() == "NotFeatureFindError" {

--
Gitblit v1.8.0