From e563ea2d2fdfd2d7c1ee61940c113bb8b39b4b85 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 27 六月 2019 11:23:14 +0800
Subject: [PATCH] pic compress by lz4
---
service/FaceSdkService.go | 129 +++++++++++++++++++++++++++++--------------
1 files changed, 87 insertions(+), 42 deletions(-)
diff --git a/service/FaceSdkService.go b/service/FaceSdkService.go
index 72b4108..f67a500 100644
--- a/service/FaceSdkService.go
+++ b/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"
- bytes, err := ioutil.ReadFile(filePath)
- if err !=nil {
- fmt.Println("Read img err:",err)
+
+ 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 {
+ return i
+ }
+ 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
}
- return bytes
}
func PushImgMsg(is protomsg.Recvmsg){
@@ -49,40 +89,45 @@
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)
-
- go func() {
- for {
- select {
- case is := <- imgPushChan:
- fmt.Println("imgPushChan in")
- b, _ := proto.Marshal(&is)
- err := client_push.Send(b)
- if err !=nil {
- fmt.Println("img Send err:",err)
- }
- default:
- //fmt.Println("no img in")
- }
- }
+ 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() {
- //鎺ユ敹浜鸿劯鎻愬彇缁撴灉
- for {
- resultBytes, err := client_pull.Recv()
- if err !=nil{
- fmt.Println("pull err:",err)
- continue
- }
- rMsg := protomsg.SdkMessage{}
- if err := proto.Unmarshal(resultBytes, &rMsg);err !=nil{
- fmt.Println("recv MSG:",rMsg)
- resultMap[rMsg.Cid] = rMsg
- }
+ go thRecv()
+}
+func thSend(){
+ for {
+ select {
+ case is := <- imgPushChan:
+ fmt.Println("imgPushChan in")
+ b, _ := proto.Marshal(&is)
+ err := client_push.Send(b)
+ if err !=nil {
+ fmt.Println("img Send err:",err)
+ }
+ default:
+ //fmt.Println("no img in")
}
- }()
+ }
+}
+func thRecv(){
+ for {
+ resultBytes, err := client_pull.Recv()
+ if err !=nil{
+ fmt.Println("pull err:",err)
+ continue
+ }
+ rMsg := protomsg.SdkMessage{}
+ if err := proto.Unmarshal(resultBytes, &rMsg);err !=nil{
+ fmt.Println("recv MSG:",rMsg)
+ resultMap[rMsg.Cid] = rMsg
+ }
+
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0