视觉修改
This commit is contained in:
		
							
								
								
									
										74
									
								
								Check.Main/Result/ProductResult.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								Check.Main/Result/ProductResult.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| using Check.Main.Common; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Drawing; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace Check.Main.Result | ||||
| { | ||||
|     /// <summary> | ||||
|     /// 代表一个待检测产品的类,存储来自多个相机的图像 | ||||
|     /// </summary> | ||||
|     public class ProductResult | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// 产品唯一ID,可以是时间戳或触发计数 | ||||
|         /// </summary> | ||||
|         public long ProductID { get; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 存储每个相机名称和其拍摄到的图像 | ||||
|         /// </summary> | ||||
|         public Dictionary<string, Bitmap> CapturedImages { get; } | ||||
|  | ||||
|         public ProductResult(long productID) | ||||
|         { | ||||
|             ProductID = productID; | ||||
|             CapturedImages = new Dictionary<string, Bitmap>(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 添加一张某个相机拍摄的图像 | ||||
|         /// </summary> | ||||
|         /// <param name="cameraName">相机名称</param> | ||||
|         /// <param name="image">拍摄的图像</param> | ||||
|         public void AddImage(string cameraName, Bitmap image) | ||||
|         { | ||||
|             if (!CapturedImages.ContainsKey(cameraName)) | ||||
|             { | ||||
|                 CapturedImages.Add(cameraName, image); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 // 如果这个键已经存在,说明发生了逻辑错误。 | ||||
|                 // 我们不应该持有这个新的 image 对象,必须释放它以防泄漏。 | ||||
|                 ThreadSafeLogger.Log($"[警告] 相机 {cameraName} 为产品 #{this.ProductID} 发送了重复的图像。多余的图像将被丢弃。"); | ||||
|                 image?.Dispose(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 检查是否所有预期的相机都已完成拍摄 | ||||
|         /// </summary> | ||||
|         /// <param name="expectedCameraCount">预期的相机数量</param> | ||||
|         /// <returns></returns> | ||||
|         public bool IsComplete(int expectedCameraCount) | ||||
|         { | ||||
|             return CapturedImages.Count == expectedCameraCount; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 释放所有图像资源,防止内存泄漏 | ||||
|         /// </summary> | ||||
|         public void Dispose() | ||||
|         { | ||||
|             foreach (var image in CapturedImages.Values) | ||||
|             { | ||||
|                 image?.Dispose(); | ||||
|             } | ||||
|             CapturedImages.Clear(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user