liuxiaolong
2019-06-27 e563ea2d2fdfd2d7c1ee61940c113bb8b39b4b85
service/FaceSdkService.go
@@ -5,8 +5,12 @@
   "basic.com/valib/deliver.git"
   "fmt"
   "github.com/gogo/protobuf/proto"
   "github.com/pierrec/lz4"
   "github.com/satori/go.uuid"
   "image"
   "io/ioutil"
   "os"
   "time"
)
const (
@@ -14,29 +18,65 @@
   Url_Service_PULL = "ipc:///tmp///webserver_1.ipc"
)
var imgPushChan chan protomsg.Recvmsg
var client_push deliver.Deliver
var client_pull deliver.Deliver
func TestPushImgMsg() {
   InitService()
   imgData := readImgFile()
   fmt.Println("imgData.len:",len(imgData))
   //for {
   proImg := readImgFile()
   if b, err := proto.Marshal(&proImg);err !=nil{
      fmt.Println("protoImage marshal err")
      return
   } else {
      bc := make([]byte,len(b))
      ht := make([]int, 64<<10)
      n,err := lz4.CompressBlock(b,bc,ht)
      if err !=nil {
         fmt.Println(err)
      }
      if n >= len(b){
         fmt.Println("image is not compressible")
      }
      bc = bc[:n]
      PushImgMsg(protomsg.Recvmsg{
         Id:uuid.NewV4().String(),
         Addr:"",
         Picdata:imgData,
         Picdata:bc,
      })
      fmt.Println("pushed img")
      //time.Sleep(5*time.Second)
   //}
   }
}
func readImgFile() []byte{
func readImgFile() protomsg.Image{
   var i protomsg.Image
   timeUnix := time.Now().Unix()
   formatTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
   filePath := "/home/user/workspace/timg.jpg"
   file, err := os.Open(filePath)
   defer file.Close()
   if err !=nil{
      fmt.Println("image not exist")
      return i
   } else {
      img, _, err := image.Decode(file)
   bytes, err := ioutil.ReadFile(filePath)
   if err !=nil {
      fmt.Println("Read img err:",err)
         return i
   }
   return bytes
      b := img.Bounds()
      width := b.Max.X
      height := b.Max.Y
      i = protomsg.Image{
         Width:int32(width),
         Height:int32(height),
         Timestamp:formatTimeStr,
         Data:bytes,
      }
      return i
   }
}
func PushImgMsg(is protomsg.Recvmsg){
@@ -49,10 +89,18 @@
func InitService(){
   fmt.Println("service init!")
   imgPushChan = make(chan protomsg.Recvmsg)
   client_push := deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
   client_pull := deliver.NewClient(deliver.PushPull, Url_Service_PULL)
   client_push = deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
   client_pull = deliver.NewClient(deliver.PushPull, Url_Service_PULL)
   defer func() {
      client_push.Close()
      client_pull.Close()
   }()
   go thSend()
   go func() {
   go thRecv()
}
func thSend(){
      for {
         select {
         case is := <- imgPushChan:
@@ -66,10 +114,9 @@
            //fmt.Println("no img in")
         }
      }
   }()
}
   go func() {
      //接收人脸提取结果
func thRecv(){
      for {
         resultBytes, err := client_pull.Recv()
         if err !=nil{
@@ -83,6 +130,4 @@
         }
      }
   }()
}