liuxiaolong
2019-08-06 73ed18c9f59ae4adc545731977c1ce3a5c26b3f7
service/FaceSdkService.go
@@ -11,6 +11,7 @@
   "sync"
   "time"
   "webserver/extend/logger"
   "webserver/extend/util"
)
type FaceSdkService struct {
@@ -32,19 +33,25 @@
)
func GetFaceFeaFromSdk(fileBytes []byte,deadTime time.Duration) ([]*protomsg.ResultFaceDetect,error,*protomsg.Image){
   tStart :=time.Now()
   s := NewFaceSdkService(fileBytes, deadTime)
   i, err := s.ReadFromUploadImg()
   logger.Debug("ReadFromUploadImg用时:", time.Since(tStart))
   if err !=nil{
      logger.Debug("readFromUploadImg err:",err)
      return nil,err,i
   }
   tStart = time.Now()
   bc, err := ImgCompress(i)
   logger.Debug("ImgCompress用时:", time.Since(tStart))
   if err !=nil {
      logger.Debug("ImgCompress err:",err)
      return nil,err,i
   }
   s.PushImgMsg(bc)
   t1 := time.Now()
   s.GetFaceFea()
   logger.Debug("GetFaceFea用时:", time.Since(t1))
   if s.Result == nil{
      return nil,errors.New("no fea"),i
   } else {
@@ -115,13 +122,18 @@
}
func ImgCompress(i *protomsg.Image) ([]byte,error){
   t1 := time.Now()
   if b, err := proto.Marshal(i); err != nil {
      logger.Debug("protoImage marshal err")
      return nil,err
   } else {
      logger.Debug("proto.Marshal用时:", time.Since(t1))
      t1 = time.Now()
      bc := make([]byte, len(b))
      ht := make([]int, 64<<10)
      n, err := lz4.CompressBlock(b, bc, ht)
      logger.Debug("lz4.CompressBlock用时:", time.Since(t1))
      t1 = time.Now()
      if err != nil {
         logger.Debug(err)
         return nil,err
@@ -131,6 +143,7 @@
         return nil,errors.New("compressed len is 0")
      }
      bc = bc[:n]
      logger.Debug("bc用时:", time.Since(t1))
      return bc,nil
   }
}
@@ -213,7 +226,7 @@
   return coms,ok
}
func (f *FeaResult) Delete(id string){
func (f *FeaResult) Delete(id int64){
   f.Lock.Lock()
   defer f.Lock.Unlock()
   delete(f.FaceM,id)
@@ -262,7 +275,12 @@
      if err := proto.Unmarshal(resultBytes, &rMsg); err == nil {
         logger.Debug("received MSG:", rMsg.Cid)
         i := protomsg.Image{}
         err := proto.Unmarshal(rMsg.Data, &i)
         bdata, err := util.UnCompress(rMsg.Data)
         if err !=nil {
            logger.Debug("uncompress err:",err)
            continue
         }
         err = proto.Unmarshal(bdata, &i)
         if err !=nil {
            continue
         }