| | |
| | | package controllers |
| | | |
| | | import ( |
| | | "basic.com/pubsub/protomsg.git" |
| | | "bytes" |
| | | "encoding/base64" |
| | | "fmt" |
| | | "github.com/gin-gonic/gin" |
| | | "webserver/extend/code" |
| | | "webserver/extend/esutil" |
| | | "webserver/extend/util" |
| | | "webserver/models" |
| | | "github.com/satori/go.uuid" |
| | | "image" |
| | | "image/jpeg" |
| | | "log" |
| | | "mime/multipart" |
| | | "net/http" |
| | | "webserver/extend/code" |
| | | "webserver/extend/esutil" |
| | | "webserver/extend/util" |
| | | "webserver/models" |
| | | "webserver/service" |
| | | ) |
| | | |
| | | type FileController struct { |
| | |
| | | filename = uuid.NewV4().String() |
| | | } |
| | | |
| | | //将上传的图片交人脸检测和人脸提取,获得特征 |
| | | var faceBase64="" |
| | | faceExtArr, err := getFaceFeaFromSdk(file) |
| | | if err ==nil && len(faceExtArr) >0 { |
| | | for _,r := range faceExtArr { |
| | | faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//获取提取到的第一张人脸特征 |
| | | break |
| | | } |
| | | fmt.Println("提取到的人脸特征为:",faceBase64) |
| | | util.ResponseFormat(c,code.Success,faceBase64) |
| | | return |
| | | } else { |
| | | util.ResponseFormat(c,code.ComError,"未提取到人脸") |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /*// 对上面的编码结果进行base64解码 |
| | |
| | | } |
| | | if tableId != "" && 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 |
| | |
| | | if len(feat) != 2560 { // linux |
| | | return field,nil,errors.New("NotFeatureFindError") |
| | | } */ // linux |
| | | feat := []byte("hello world") // windows 测试放开 |
| | | |
| | | //将上传的图片交人脸检测和人脸提取,获得特征 |
| | | var faceBase64="" |
| | | faceExtArr, err := getFaceFeaFromSdk(file) |
| | | if err ==nil && len(faceExtArr) >0 { |
| | | for _,r := range faceExtArr { |
| | | faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//获取提取到的第一张人脸特征 |
| | | break |
| | | } |
| | | } |
| | | |
| | | dbperson := new(models.Dbtablepersons) |
| | | dbperson.FaceUrl = picIp+field // 图片路经 |
| | | dbperson.TableId = tableId // |
| | | dbperson.PersonName = filename // 图片名 |
| | | // 演示base64编码 |
| | | encodeString := base64.StdEncoding.EncodeToString(feat) |
| | | dbperson.Feature = encodeString // 特征值base64 码 |
| | | dbperson.Feature = faceBase64 // 特征值base64 码 |
| | | result := addDbPerson(dbperson) |
| | | return field, result, nil |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | func getFaceFeaFromSdk(file multipart.File) ([]*protomsg.ResultFaceExtCom,error){ |
| | | s := service.NewFaceSdkService(file) |
| | | i, err := s.ReadFromUploadImg() |
| | | if err !=nil{ |
| | | return nil,err |
| | | } |
| | | bc, err := service.ImgCompress(i) |
| | | if err !=nil { |
| | | return nil,err |
| | | } |
| | | s.PushImgMsg(bc) |
| | | return s.GetFaceFea() |
| | | } |
| | | |
| | | /**上传方法**/ |
| | | |
| | | |