C3032
3 天以前 ebcc1d53f14112363bbf539bcaf0202aadcdc9d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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<ImageEnhancementDataType, RecordImageEnhancementData> _filters;
        private readonly string _dataFilePath;
        private RecordImageEnhancementData _currentFilter;
        private static ImageEnhancementManager _instance;
        /// <summary>
        /// 线程锁
        /// </summary>
        private static readonly object _lock = new object();
        private ImageEnhancementManager(string dataFilePath = "imageEnhancements.json")
        {
            _dataFilePath = dataFilePath;
            _filters = new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>();
            _currentFilter = null;
            LoadUsers();
        }
        public static ImageEnhancementManager Instance
        {
            get
            {
                // 双重检查锁定确保线程安全
                if (_instance == null)
                {
                    lock (_lock)
                    {
                        if (_instance == null)
                        {
                            _instance = new ImageEnhancementManager();
                        }
                    }
                }
                return _instance;
            }
        }
 
        /// <summary>
        /// 添加图像增强算子
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        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;
        }
 
        /// <summary>
        /// 删除图像增强算子
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        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;
            }
        }
 
        
        /// <summary>
        /// 获取所有用户列表
        /// </summary>
        /// <returns>List<RecordUserData></returns>
        public List<RecordImageEnhancementData> GetAllUsers()
        {
            return _filters.Select(u => u.Value.Clone()).ToList();
        }
 
        #region json文件保存加载
        /// <summary>
        /// 保存用户数据到JSON文件
        /// </summary>
        private void SaveUsers()
        {
            try
            {
                ConfigManager<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>.SaveConfig<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>(_filters, _dataFilePath);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"保存图像增强算子失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        /// <summary>
        /// 从JSON文件加载用户数据
        /// </summary>
        private void LoadUsers()
        {
            try
            {
                if (File.Exists(_dataFilePath))
                {
                    _filters = ConfigManager<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>.LoadConfig<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>(_dataFilePath) ?? new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"加载图像增强算子失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                _filters = new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>();
            }
        }
        #endregion
    }
}