using Microsoft.VisualBasic.ApplicationServices; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LB_SmartVisionCommon { public class ImageEnhancementManager { private Dictionary _filters; private readonly string _dataFilePath; private RecordImageEnhancementData _currentFilter; private static ImageEnhancementManager _instance; /// /// 线程锁 /// private static readonly object _lock = new object(); private ImageEnhancementManager(string dataFilePath = "imageEnhancements.json") { _dataFilePath = dataFilePath; _filters = new Dictionary(); _currentFilter = null; LoadUsers(); } public static ImageEnhancementManager Instance { get { // 双重检查锁定确保线程安全 if (_instance == null) { lock (_lock) { if (_instance == null) { _instance = new ImageEnhancementManager(); } } } return _instance; } } /// /// 添加图像增强算子 /// /// /// public bool AddUser(RecordImageEnhancementData filter) { if (_currentFilter == null) { _currentFilter = filter; } try { RecordImageEnhancementData recordImageEnhancementData = new RecordImageEnhancementData(); recordImageEnhancementData.MaskWidth = filter.MaskWidth; recordImageEnhancementData.MaskHight = filter.MaskHight; recordImageEnhancementData.Factor = filter.Factor; recordImageEnhancementData.FilterName = filter.FilterName; _filters.Add(recordImageEnhancementData.FilterName, recordImageEnhancementData); } catch (Exception ex) { MessageBox.Show("该算子已存在"); } SaveUsers(); return true; } /// /// 删除图像增强算子 /// /// /// public bool DeleteUser(RecordImageEnhancementData filter) { try { // 1. 从字典中删除 if (_filters.ContainsKey(filter.FilterName)) { _filters.Remove(filter.FilterName); } // 2. 如果删除的是当前滤波,清空_currentFilter if (_currentFilter != null && _currentFilter.FilterName == filter.FilterName) { _currentFilter = null; } // 3. 保存更改 SaveUsers(); return true; } catch (Exception ex) { // 记录日志 Console.WriteLine($"删除滤波失败: {ex.Message}"); return false; } } /// /// 获取所有用户列表 /// /// List public List GetAllUsers() { return _filters.Select(u => u.Value.Clone()).ToList(); } #region json文件保存加载 /// /// 保存用户数据到JSON文件 /// private void SaveUsers() { try { ConfigManager>.SaveConfig>(_filters, _dataFilePath); } catch (Exception ex) { MessageBox.Show($"保存图像增强算子失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// /// 从JSON文件加载用户数据 /// private void LoadUsers() { try { if (File.Exists(_dataFilePath)) { _filters = ConfigManager>.LoadConfig>(_dataFilePath) ?? new Dictionary(); } } catch (Exception ex) { MessageBox.Show($"加载图像增强算子失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); _filters = new Dictionary(); } } #endregion } }