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
|
}
|
}
|