From 1bc9b974469d6959c900b7a083fec2689e5cdd8e Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期四, 18 四月 2024 22:35:22 +0800 Subject: [PATCH] 添加根据坐标切小图的功能 --- repository/captureRepo.go | 48 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 36 insertions(+), 12 deletions(-) diff --git a/repository/captureRepo.go b/repository/captureRepo.go index adf71d7..9e66bf2 100644 --- a/repository/captureRepo.go +++ b/repository/captureRepo.go @@ -22,6 +22,8 @@ } func (c CaptureRepository) FaceForward(faceList []vo.FaceObject) { + var err error + if faceList == nil || len(faceList) == 0 { logger.Warn("FaceList is nil") return @@ -35,19 +37,42 @@ var deviceId = face.DeviceID var faceId = face.FaceID - var faceImageStr string + var bgImageStr, imageType string + var bgImageBytes, faceImageBytes []byte = nil, nil // 鑾峰彇澶у浘, 鐩墠娴峰悍鐨勫皬鍥惧垎杈ㄧ巼澶綆 for _, image := range face.SubImageList.SubImageInfoObject { - if len(image.Data) > len(faceImageStr) { - faceImageStr = image.Data + if len(image.Data) > len(bgImageStr) { + bgImageStr = image.Data + imageType = image.Type + } + } + + bgImageBytes, err = base64.StdEncoding.DecodeString(bgImageStr) + if err != nil { + logger.Warn("Decode Image Base64 String failure, %s", err.Error()) + continue + } + + // 鍒ゆ柇鍥剧墖绫诲瀷鏄惁涓哄満鏅浘, 鏍规嵁浜鸿劯鍧愭爣鍒囧皬鍥�. + if imageType == "14" { + faceRect := &vo.Rect{ + Left: face.LeftTopX, + Top: face.LeftTopY, + Right: face.RightBtmX, + Bottom: face.RightBtmY, + } + + faceImageBytes, err = util.SubCutImg(bgImageBytes, faceRect, 90) + if err != nil { + logger.Warn("Cut face image failure, %s", err.Error()) } } // 杞彂鍥惧儚 - logger.Debug("Prepare forward image, deviceId:%s, image len:%d, server:%s", deviceId, len(faceImageStr), config.ForwardConf.SyncServer) - if deviceId != "" && faceImageStr != "" && config.ForwardConf.SyncServer != "" { - pd := c.PackPushDataV2(deviceId, faceId, faceImageStr, face.FaceAppearTime) + logger.Debug("Prepare forward image, deviceId:%s, image len:%d, server:%s", deviceId, len(bgImageStr), config.ForwardConf.SyncServer) + if deviceId != "" && bgImageStr != "" && config.ForwardConf.SyncServer != "" { + pd := c.PackPushDataV2(deviceId, faceId, face.FaceAppearTime, bgImageBytes, faceImageBytes) if pd == nil { return } @@ -125,7 +150,7 @@ return pd } -func (c CaptureRepository) PackPushDataV2(deviceId, faceId, faceImage, appearTime string) *vo.PushDataInfoV2 { +func (c CaptureRepository) PackPushDataV2(deviceId, faceId, appearTime string, bgImgBytes, faceImgBytes []byte) *vo.PushDataInfoV2 { var pd = new(vo.PushDataInfoV2) var device models.Device @@ -147,13 +172,12 @@ devPos.Pos = device.Pos } - imageBytes, err := base64.StdEncoding.DecodeString(faceImage) - if err != nil { - logger.Warn("Decode Image Base64 String failure, %s", err.Error()) - return pd + pd.PicMaxImages = append(pd.PicMaxImages, bgImgBytes) + + if faceImgBytes != nil { + pd.PicSmImages = append(pd.PicSmImages, faceImgBytes) } - pd.PicMaxImages = append(pd.PicMaxImages, imageBytes) pd.PicId = faceId pd.PicDate = faceAppearTime.Format("2006-01-02 15:04:05") pd.DataSource = "camera" -- Gitblit v1.8.0