From d42b09cda8b2bc58c43c200f3aabdb0b2a7e9211 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期五, 12 七月 2019 12:02:14 +0800 Subject: [PATCH] fix search controllers --- controllers/fileController.go | 166 +++++++++++++++++++++++++++++-------------------------- 1 files changed, 87 insertions(+), 79 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 777fde5..3b641e0 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -10,6 +10,7 @@ "github.com/satori/go.uuid" "image" "image/jpeg" + "io/ioutil" "log" "mime/multipart" "net/http" @@ -101,15 +102,32 @@ //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� - - faceExtArr, err := getFaceFeaFromSdk(file) - if err ==nil && len(faceExtArr) >0 { + fileBytes, _ := ioutil.ReadAll(file) + faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes) + if err ==nil && len(faceArr) >0 { var faceBase64= "" - for _,r := range faceExtArr { + var field = "" + var rcFace *protomsg.Rect + for _,r := range faceArr { + rcFace = r.Pos.RcFace faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� break } - util.ResponseFormat(c,code.Success,faceBase64) + //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 + cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + fileInfo, e := esutil.PostFormData(weedfsUri, "娴嬭瘯浜鸿劯鍒囧浘", "file", cutFaceImgData) + if e != nil { + fmt.Println(e.Error()) + + } else { + field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞 + } + if strings.Contains(field,"/"){ + idx := strings.Index(field, "/") + field = field[idx+1:] + } + fmt.Println("field:",field) + util.ResponseFormat(c,code.Success,field + ";" + faceBase64) } else { util.ResponseFormat(c,code.ComError,"鏈彁鍙栧埌浜鸿劯") } @@ -122,89 +140,79 @@ }*/ func uploadFileReturnAddr(file multipart.File, filename string, tableId string) (string, map[string]interface{}, error) { - defer file.Close() field := "" // weedfs 涓婁紶 - { - fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", file) - if e != nil { - fmt.Println(e.Error()) - return "", nil, e - } else { - field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞 - } - } - if field != "" { - // 杩斿洖鐗瑰緛鍊� fileInfo["point"] = v.RcFace fileInfo["feature"] = feat - - /*features := gorun.GetSimpleFaceDetect(picIp+field) // 鐗瑰緛鍊� // linux - if len(features) == 0 { // linux - return field,nil,errors.New("NotFeatureFindError") // linux - }else if len(features) > 1 { // linux - return field,nil,errors.New("TooManyFeatureFindError") // linux - } // linux - feat := features[0]["feature"].([]byte) // linux - if len(feat) != 2560 { // linux - return field,nil,errors.New("NotFeatureFindError") - - } */ // linux - if strings.Contains(field,"/"){ - idx := strings.Index(field, "/") - field = field[:idx+1] - } - fmt.Println("field:",field) - - //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� - var faceBase64="" - faceExtArr, err := getFaceFeaFromSdk(file) - if faceExtArr ==nil { - return "",nil,errors.New("NotFeatureFindError") - } - if err ==nil && len(faceExtArr) >0 { - for _,r := range faceExtArr { - faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� - break - } - } - - - dbperson := new(models.Dbtablepersons) - dbperson.PersonPicUrl = field // 鍥剧墖璺粡 - dbperson.TableId = tableId // - dbperson.PersonName = filename // 鍥剧墖鍚� - // 婕旂ずbase64缂栫爜 - - dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� - - result := addDbPerson(dbperson) - return field, result, nil - } else { - return field, nil, nil - } -} - -func getFaceFeaFromSdk(file multipart.File) ([]*protomsg.ResultFaceExtCom,error){ - s := service.NewFaceSdkService(file) - i, err := s.ReadFromUploadImg() - if err !=nil{ - fmt.Println("readFromUploadImg err:",err) - return nil,err - } - bc, err := service.ImgCompress(i) + fileBytes, err := ioutil.ReadAll(file) if err !=nil { - fmt.Println("ImgCompress err:",err) - return nil,err + return "",nil,err } - s.PushImgMsg(bc) - s.GetFaceFea() - if s.Result == nil{ - return nil,errors.New("no fea") + + //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� + var faceBase64="" + faceArr, err,pI := service.GetFaceFeaFromSdk(fileBytes) + if faceArr ==nil { + return "",nil,errors.New("NotFeatureFindError") + } + var rcFace *protomsg.Rect + if err ==nil && len(faceArr) >0 { + for _,r := range faceArr { + //鎷垮埌浜鸿劯鐨勫潗鏍� + rcFace = r.Pos.RcFace + + faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� + break + } + } + //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 + cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", cutFaceImgData) + if e != nil { + fmt.Println(e.Error()) + return "", nil, e } else { - return s.Result,nil + field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞 } + if strings.Contains(field,"/"){ + idx := strings.Index(field, "/") + field = field[idx+1:] + } + fmt.Println("field:",field) + + dbperson := new(models.Dbtablepersons) + dbperson.PersonPicUrl = field // 鍥剧墖璺粡 + dbperson.TableId = tableId // + dbperson.PersonName = filename // 鍥剧墖鍚� + // 婕旂ずbase64缂栫爜 + + dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� + + result := addDbPerson(dbperson) + return field, result, nil + } +//func getFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceExtCom,error,*protomsg.Image){ +// s := service.NewFaceSdkService(fileBytes) +// i, err := s.ReadFromUploadImg() +// if err !=nil{ +// fmt.Println("readFromUploadImg err:",err) +// return nil,err,i +// } +// bc, err := service.ImgCompress(i) +// if err !=nil { +// fmt.Println("ImgCompress err:",err) +// return nil,err,i +// } +// s.PushImgMsg(bc) +// s.GetFaceFea() +// if s.Result == nil{ +// return nil,errors.New("no fea"),i +// } else { +// return s.Result,nil,i +// } +//} + /**涓婁紶鏂规硶**/ // @Summary 鎵归噺娣诲姞搴曞簱浜哄憳 -- Gitblit v1.8.0