zhangzengfei
2024-06-20 4cb74495ff756ac97f3ce6a846951f4bdb317aec
添加大图转url
1个文件已添加
2个文件已修改
61 ■■■■■ 已修改文件
config/config.go 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controller/captureCtl.go 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/file.go 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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"`
}
// 梯控设备
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)
util/file.go
New file
@@ -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
}