From 04ea121a6588096ce5410f31c609441326bc7b47 Mon Sep 17 00:00:00 2001 From: xuxiuxi <554325746@qq.com> Date: 星期三, 10 七月 2019 11:14:29 +0800 Subject: [PATCH] fix snapshot --- controllers/fileController.go | 132 +++++++++++++++++++++++-------------------- 1 files changed, 70 insertions(+), 62 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 777fde5..868bd7a 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) + fileBytes, _ := ioutil.ReadAll(file) + faceExtArr, err, pI := getFaceFeaFromSdk(fileBytes) if err ==nil && len(faceExtArr) >0 { var faceBase64= "" + var field = "" + var rcFace *protomsg.Rect for _,r := range faceExtArr { + rcFace = r.Pos.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,86 +140,76 @@ }*/ 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) // 鏂囦欢璺緞 + fileBytes, err := ioutil.ReadAll(file) + if err !=nil { + return "",nil,err + } + + //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� + var faceBase64="" + faceExtArr, err,pI := getFaceFeaFromSdk(fileBytes) + if faceExtArr ==nil { + return "",nil,errors.New("NotFeatureFindError") + } + var rcFace *protomsg.Rect + if err ==nil && len(faceExtArr) >0 { + for _,r := range faceExtArr { + //鎷垮埌浜鸿劯鐨勫潗鏍� + rcFace = r.Pos.Pos.RcFace + + faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰� + break } } - 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 + //鏍规嵁浜鸿劯鍧愭爣鎵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 field, nil, 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(file multipart.File) ([]*protomsg.ResultFaceExtCom,error){ - s := service.NewFaceSdkService(file) +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 + return nil,err,i } bc, err := service.ImgCompress(i) if err !=nil { fmt.Println("ImgCompress err:",err) - return nil,err + return nil,err,i } s.PushImgMsg(bc) s.GetFaceFea() if s.Result == nil{ - return nil,errors.New("no fea") + return nil,errors.New("no fea"),i } else { - return s.Result,nil + return s.Result,nil,i } } -- Gitblit v1.8.0