From 171b45f8d78612e82c4923042ac8101e3f4a8f42 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 05 六月 2024 17:05:41 +0800
Subject: [PATCH] 添加切小图的图像分辨率转换

---
 config/config.go          |   12 ++++++++++--
 repository/captureRepo.go |   15 ++++++++++-----
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/config/config.go b/config/config.go
index 7515d62..850232b 100644
--- a/config/config.go
+++ b/config/config.go
@@ -47,8 +47,14 @@
 	ReportServer   string `mapstructure:"report-server"`
 	ReportInterval int    `mapstructure:"report-interval"`
 	RetryInterval  int    `mapstructure:"retry-interval"`
-	CutFaceImage   bool   `mapstructure:"cut-face-image"`
-	Enable         bool   `mapstructure:"enable"`
+
+	Enable bool `mapstructure:"enable"`
+}
+
+type image struct {
+	CutFaceImage bool `mapstructure:"cut-face-image"`
+	OriginWidth  int  `mapstructure:"origin-width"`
+	OriginHeight int  `mapstructure:"origin-height"`
 }
 
 // 姊帶璁惧
@@ -69,6 +75,7 @@
 var RateLimitConf = &rateLimitConfig{}
 var ClientConf = &client{}
 var NVCSConf = &nvcs{}
+var ImageConf = &image{}
 
 // Init is an exported method that takes the environment starts the viper
 // (external lib) and returns the configuration struct.
@@ -99,6 +106,7 @@
 	v.UnmarshalKey("rate-limit", RateLimitConf)
 	v.UnmarshalKey("client", ClientConf)
 	v.UnmarshalKey("nvcs", NVCSConf)
+	v.UnmarshalKey("image", ImageConf)
 
 	if LogConf.Level == "" {
 		LogConf.Level = "info"
diff --git a/repository/captureRepo.go b/repository/captureRepo.go
index 8572735..2a53144 100644
--- a/repository/captureRepo.go
+++ b/repository/captureRepo.go
@@ -37,6 +37,7 @@
 		var deviceId = face.DeviceID
 		var faceId = face.FaceID
 		var bgImageStr, imageType string
+		var bgImageWidth, bgImageHeight int
 		var bgImageBytes, faceImageBytes []byte = nil, nil
 
 		// 鑾峰彇澶у浘, 鐩墠娴峰悍鐨勫皬鍥惧垎杈ㄧ巼澶綆
@@ -45,6 +46,8 @@
 				continue
 			}
 
+			bgImageWidth = image.Width
+			bgImageHeight = image.Height
 			if len(image.Data) > 0 {
 				if len(image.Data) > len(bgImageStr) {
 					bgImageStr = image.Data
@@ -69,12 +72,14 @@
 		}
 
 		// 鍒ゆ柇鍥剧墖绫诲瀷鏄惁涓哄満鏅浘, 鏍规嵁浜鸿劯鍧愭爣鍒囧皬鍥�.
-		if imageType == "14" && config.ForwardConf.CutFaceImage {
+		if imageType == "14" && config.ImageConf.CutFaceImage {
+			scaleX := bgImageWidth / config.ImageConf.OriginWidth
+			scaleY := bgImageHeight / config.ImageConf.OriginHeight
 			faceRect := &vo.Rect{
-				Left:   face.LeftTopX,
-				Top:    face.LeftTopY,
-				Right:  face.RightBtmX,
-				Bottom: face.RightBtmY,
+				Left:   face.LeftTopX * scaleX,
+				Top:    face.LeftTopY * scaleY,
+				Right:  face.RightBtmX * scaleX,
+				Bottom: face.RightBtmY * scaleY,
 			}
 
 			faceImageBytes, err = util.SubCutImg(bgImageBytes, faceRect, 90)

--
Gitblit v1.8.0