From cefb30a1e8737b52e46da86f2decafb7d7e150f0 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 28 六月 2019 20:33:21 +0800
Subject: [PATCH] test

---
 service/FaceSdkService.go |   89 +++++++++++++++++++++++++-------------------
 1 files changed, 51 insertions(+), 38 deletions(-)

diff --git a/service/FaceSdkService.go b/service/FaceSdkService.go
index 5f2888f..64e5f6c 100644
--- a/service/FaceSdkService.go
+++ b/service/FaceSdkService.go
@@ -10,29 +10,30 @@
 	"github.com/pkg/errors"
 	"github.com/satori/go.uuid"
 	"gocv.io/x/gocv"
+	"io/ioutil"
 	"mime/multipart"
 	"sync"
 	"time"
 )
 
 type FaceSdkService struct {
-	File multipart.File
+	File *multipart.File
 	Id string
 }
 
 const (
-	Ipc_Push_Ext = "_2.ipc"
-	Ipc_Pull_Ext = "_1.ipc"
-	Ipc_Url_Pre = "ipc:///tmp///"
+	Ipc_Push_Ext       = "_2.ipc"
+	Ipc_Pull_Ext       = "_1.ipc"
+	Ipc_Url_Pre        = "ipc:///tmp///"
 	Virtual_FaceTaskId = "92496BDF-2BFA-98F2-62E8-96DD9866ABD2"
-	Virtual_FaceSdkId = "virtual-faceextract-sdk-pull"
-	Url_Service_PUSH = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Push_Ext
-	Url_Service_PULL = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Pull_Ext
+	Virtual_FaceSdkId  = "virtual-faceextract-sdk-pull"
+	Url_Service_PUSH   = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Push_Ext
+	Url_Service_PULL   = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Pull_Ext
 )
 
 func NewFaceSdkService(file multipart.File) FaceSdkService{
 	return FaceSdkService{
-		File:file,
+		File:&file,
 		Id:uuid.NewV4().String(),
 	}
 }
@@ -58,13 +59,18 @@
 }
 
 func (s *FaceSdkService) ReadFromUploadImg() (*protomsg.Image,error){
-	defer s.File.Close()
-	imgB := make([]byte,0)
-	if _, err := s.File.Read(imgB);err !=nil{
+	defer (*(s.File)).Close()
+	imgB, err := ioutil.ReadAll(*(s.File))
+	if err !=nil{
+		fmt.Println("File.Read err:",err)
 		return nil,err
 	}
+
+	fmt.Println("imgB.len:",len(imgB))
+
 	picMat, err := gocv.IMDecode(imgB, gocv.IMReadColor)
 	if err !=nil {
+		fmt.Println("gocv.IMDecode err:",err)
 		return nil,err
 	}
 	defer picMat.Close()
@@ -74,7 +80,7 @@
 	}
 	height := int32(picMat.Rows())
 	width := int32(picMat.Cols())
-	data := picMat.ToBytes()
+	//data := picMat.ToBytes()
 	timeUnix := time.Now().Unix()
 	formatTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
 
@@ -82,25 +88,25 @@
 		Width: width,
 		Height: height,
 		Timestamp: formatTimeStr,
-		Data: data,
+		Data: imgB,
 		Id: timeUnix,
 		Cid:s.Id,
 	},nil
 }
 
 func ImgCompress(i *protomsg.Image) ([]byte,error){
-	if b, err := proto.Marshal(i);err !=nil{
+	if b, err := proto.Marshal(i); err != nil {
 		fmt.Println("protoImage marshal err")
 		return nil,err
 	} else {
-		bc := make([]byte,len(b))
+		bc := make([]byte, len(b))
 		ht := make([]int, 64<<10)
-		n,err := lz4.CompressBlock(b, bc, ht)
-		if err !=nil {
+		n, err := lz4.CompressBlock(b, bc, ht)
+		if err != nil {
 			fmt.Println(err)
 			return nil,err
 		}
-		if n >= len(b){
+		if n >= len(b) {
 			fmt.Println("image is not compressible")
 			return nil,errors.New("compressed len is 0")
 		}
@@ -116,7 +122,8 @@
 	go func() {
 		for {
 			select {
-			case <-time.Tick(time.Second*10):
+			case <-time.Tick(time.Second*5):
+				fmt.Println("鍊掕鏃剁粨鏉�")
 				ch <- nil
 				wg.Done()
 				return
@@ -125,11 +132,15 @@
 					fmt.Println("faceFea got!!!")
 					ch <- feas
 					return
+				} else {
+					fmt.Println("灏氭湭鎷垮埌fea")
 				}
 			}
 		}
 	}()
+	fmt.Println("wa.Wait")
 	wg.Wait()
+	fmt.Println("<-ch")
 	msg := <- ch
 	if msg != nil {
 		return msg,nil
@@ -160,13 +171,13 @@
 	//gocv.IMWrite("xxx.jpg", wrMat)
 
 	i = protomsg.Image{
-		Width: width,
-		Height: height,
+		Width:     width,
+		Height:    height,
 		Timestamp: formatTimeStr,
-		Data: data,
-		Id: timeUnix,
+		Data:      data,
+		Id:        timeUnix,
 	}
-	i.Cid = uuid.NewV4().String()//鏁版嵁鍞竴id
+	i.Cid = uuid.NewV4().String() //鏁版嵁鍞竴id
 	fmt.Println("gocv read img completed")
 	return i
 }
@@ -177,11 +188,12 @@
 
 var resultMap map[string][]*protomsg.ResultFaceExtCom
 
-
-func InitService(){
+func InitService() {
 	fmt.Println("service init!")
 	imgPushChan = make(chan []byte)
+
 	resultMap = make(map[string][]*protomsg.ResultFaceExtCom,0)
+
 	client_push = deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
 	client_pull = deliver.NewClient(deliver.PushPull, Url_Service_PULL)
 	defer func() {
@@ -193,14 +205,14 @@
 	go thRecv()
 }
 
-func thSend(){
+func thSend() {
 	for {
 		select {
-		case d := <- imgPushChan:
+		case d := <-imgPushChan:
 			fmt.Println("imgPushChan in")
 			err := client_push.Send(d)
-			if err !=nil {
-				fmt.Println("img Send err:",err)
+			if err != nil {
+				fmt.Println("img Send err:", err)
 			}
 		default:
 			//fmt.Println("no img in")
@@ -208,19 +220,20 @@
 	}
 }
 
-func thRecv(){
+func thRecv() {
 	for {
 		resultBytes, err := client_pull.Recv()
-		if err !=nil{
-			fmt.Println("pull err:",err)
+		if err != nil {
+			//fmt.Println("pull err:", err)
 			continue
 		}
 		rMsg := protomsg.SdkMessage{}
-		if err := proto.Unmarshal(resultBytes, &rMsg);err ==nil{
-			fmt.Println("received MSG:",rMsg.Cid)
+		if err := proto.Unmarshal(resultBytes, &rMsg); err == nil {
+			fmt.Println("received MSG:", rMsg.Cid)
 			perId := rMsg.Cid //鏁版嵁id
-			if rMsg.Tasklab !=nil && rMsg.Tasklab.Taskid == Virtual_FaceTaskId {
+			if rMsg.Tasklab != nil && rMsg.Tasklab.Taskid == Virtual_FaceTaskId {
 				sdkInfos := rMsg.Tasklab.Sdkinfos
+
 				fmt.Println("Len(sdkInfos)=",len(sdkInfos))
 				for _,swt :=range sdkInfos{
 					if swt.Sdktype =="FaceDetect"{
@@ -257,8 +270,8 @@
 				}
 			}
 		} else {
-			fmt.Println("recv msg Err:",err)
+			fmt.Println("recv msg Err:", err)
 		}
 
 	}
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0