From 07385392f21fab8562c1ea551c5672c772dce20d Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期五, 26 七月 2019 21:07:07 +0800 Subject: [PATCH] sdkmessage uncompress --- extend/util/util.go | 31 ++++++++++++++++++++++++++++++- service/FaceSdkService.go | 8 +++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/extend/util/util.go b/extend/util/util.go index 5d51602..8f7883c 100644 --- a/extend/util/util.go +++ b/extend/util/util.go @@ -7,6 +7,7 @@ "errors" "github.com/gin-gonic/gin" "github.com/golang/glog" + "github.com/pierrec/lz4" "gocv.io/x/gocv" "image" "net" @@ -197,4 +198,32 @@ } f, _ := strconv.ParseFloat(fmt.Sprintf("%2.2f", compareScore), 32) return float32(f) -} \ No newline at end of file +} + +// UnCompress uncompress +func UnCompress(in []byte) ([]byte, error) { + out := make([]byte, 10*len(in)) + n, err := lz4.UncompressBlock(in, out) + if err != nil { + fmt.Println(err) + return nil, err + } + out = out[:n] // uncompressed data + return out, nil +} + +// Compress compress +func Compress(in []byte) ([]byte, error) { + out := make([]byte, len(in)) + ht := make([]int, 64<<10) // buffer for the compression table + n, err := lz4.CompressBlock(in, out, ht) + if err != nil { + fmt.Println(err) + return nil, err + } + if n >= len(in) { + fmt.Println("image is not compressible") + } + out = out[:n] // compressed data + return out, nil +} diff --git a/service/FaceSdkService.go b/service/FaceSdkService.go index c7ee4b7..43a4101 100644 --- a/service/FaceSdkService.go +++ b/service/FaceSdkService.go @@ -11,6 +11,7 @@ "sync" "time" "webserver/extend/logger" + "webserver/extend/util" ) type FaceSdkService struct { @@ -262,7 +263,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 } -- Gitblit v1.8.0