From 4cb74495ff756ac97f3ce6a846951f4bdb317aec Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 20 六月 2024 19:09:31 +0800
Subject: [PATCH] 添加大图转url
---
config/config.go | 5 +-
controller/captureCtl.go | 25 ++++++++++++
util/file.go | 31 +++++++++++++++
3 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/config/config.go b/config/config.go
index cebb37e..880e41e 100644
--- a/config/config.go
+++ b/config/config.go
@@ -51,8 +51,9 @@
}
type image struct {
- CutFaceImage bool `mapstructure:"cut-face-image"`
- Enlarge int `mapstructure:"enlarge"`
+ CutFaceImage bool `mapstructure:"cut-face-image"`
+ Enlarge int `mapstructure:"enlarge"`
+ ImageUriPrefix string `mapstructure:"url-prefix"`
}
// 姊帶璁惧
diff --git a/controller/captureCtl.go b/controller/captureCtl.go
index 7e53382..6f05687 100644
--- a/controller/captureCtl.go
+++ b/controller/captureCtl.go
@@ -3,8 +3,10 @@
import (
"encoding/base64"
"fmt"
+ "gat1400Exchange/util"
"math/rand"
"net/http"
+ "path"
"strconv"
"time"
@@ -46,6 +48,29 @@
face := req.FaceListObject.FaceObject[0]
logger.Debug("Receive new face message, ip:%s, device id:%s faceId:%s, LeftTopX:%d, appearTime:%s", c.RemoteIP(), face.DeviceID, face.FaceID, face.LeftTopX, face.FaceAppearTime)
+ if config.ClientConf.UploadType == "url" {
+ for idx, img := range face.SubImageList.SubImageInfoObject {
+ if img.Type != "14" {
+ continue
+ }
+
+ imageBytes, err := base64.StdEncoding.DecodeString(img.Data)
+ if err != nil {
+ logger.Warn("Decode Small Image Base64 String failure, %s", err.Error())
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ today := time.Now().Format("2006-01-02")
+ imagePath := path.Join(config.LogConf.Path, "gat1400_face_images", today, img.ImageID+".jpeg")
+ err = util.WriteToFile(imagePath, imageBytes)
+ if err != nil {
+ face.SubImageList.SubImageInfoObject[idx].Data = ""
+ face.SubImageList.SubImageInfoObject[idx].StoragePath = config.ImageConf.ImageUriPrefix + "/" + today + "/" + img.ImageID + ".jpeg"
+ }
+ }
+ }
+
// 濡傛灉寮�鍚簡涓嬬骇, 韬唤搴旇鏄秷鎭唬鐞�, 涓嶅啀杞彂鍒版湇鍔″櫒
if config.ClientConf.Enable && config.ServeConf.Role == "agent" {
go a.Repository.VIIDFaceMsgForward(&req)
diff --git a/util/file.go b/util/file.go
new file mode 100644
index 0000000..875628e
--- /dev/null
+++ b/util/file.go
@@ -0,0 +1,31 @@
+package util
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+)
+
+func WriteToFile(path string, data []byte) error {
+ dir := filepath.Dir(path)
+
+ _, err := os.Stat(dir)
+ if os.IsNotExist(err) {
+ err := os.MkdirAll(dir, 0755)
+ if err != nil {
+ return fmt.Errorf("failed to create directory: %v", err)
+ }
+ } else if err != nil {
+ // 鍏朵粬閿欒
+ return fmt.Errorf("failed to check directory status: %v", err)
+ }
+
+ // 鍐欏叆鏁版嵁鍒版枃浠�
+ err = ioutil.WriteFile(path, data, 0644)
+ if err != nil {
+ return fmt.Errorf("failed to write to file: %v", err)
+ }
+
+ return nil
+}
--
Gitblit v1.8.0