Image-CSharp:开源WPF多插件图像处理框架
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 |
Image-CSharp
基于WPF和Material Design的图像处理软件,模仿Image-Py功能。
功能特性
🎯 精确选择工具
- 矩形选择工具
- 椭圆选择工具
- 多边形选择工具
- 魔术棒选择工具
- 智能边缘检测选择
🎨 绘图和标注
- 画笔和铅笔工具
- 橡皮擦工具
- 填充工具
- 文本标注
- 几何形状绘制
- 图层管理
📏 测量工具
- 直线距离测量
- 角度测量
- 面积和周长计算
- 像素强度测量
- 批量测量统计
🔧 高级滤镜
- 模糊滤镜(高斯模糊、运动模糊等)
- 锐化滤镜(USM锐化、智能锐化等)
- 边缘检测(Sobel、Laplacian、Canny等)
- 形态学操作
- 自定义卷积核
📊 数据分析
- 图像直方图分析
- 颜色分布统计
- 纹理特征提取
- 形状特征分析
- 数据导出和报告
⚡ 批处理
- 批量格式转换
- 自动化处理流程
- 宏录制和回放
- 并行处理优化
- 进度监控管理
技术架构
🏗️ 架构模式
- MVVM模式: Model-View-ViewModel设计模式
- 插件系统: 基于MEF的插件架构
- 依赖注入: 使用Microsoft.Extensions.DependencyInjection
🎨 UI框架
- WPF: Windows Presentation Foundation
- Material Design: MaterialDesignThemes和MaterialDesignColors
- MVVM工具包: CommunityToolkit.Mvvm
🖼️ 图像处理
- ImageSharp: SixLabors.ImageSharp用于图像处理
- 插件扩展: 支持自定义滤镜和工具插件
🔧 核心库
- Image-CSharp.Core: 核心模型、接口和服务
- Image-CSharp.Plugins: 插件实现
- Image-CSharp.Tests: 单元测试
项目结构
Image-CSharp/
├── Image-CSharp.sln # 解决方案文件
├── Image-CSharp/ # 主应用程序
│ ├── Views/ # WPF视图
│ ├── ViewModels/ # MVVM视图模型
│ ├── Controls/ # 自定义控件
│ ├── Converters/ # 值转换器
│ ├── Resources/ # 样式和资源
│ ├── Assets/ # 图标和资产
│ └── App.xaml # 应用程序入口
├── Image-CSharp.Core/ # 核心库
│ ├── Interfaces/ # 接口定义
│ ├── Models/ # 数据模型
│ ├── Services/ # 业务服务
│ ├── Events/ # 事件定义
│ └── Filters/ # 滤镜实现
├── Image-CSharp.Plugins/ # 插件库
│ ├── Filters/ # 滤镜插件
│ ├── Tools/ # 工具插件
│ └── Transforms/ # 变换插件
└── Image-CSharp.Tests/ # 单元测试
快速开始
环境要求
- .NET 6.0 SDK
- Visual Studio 2022 或更高版本
- Windows 10/11
构建项目
# 还原NuGet包
dotnet restore
# 构建项目
dotnet build
# 运行应用程序
dotnet run --project Image-CSharp/Image-CSharp.csproj
使用Visual Studio
- 打开
Image-CSharp.sln - 选择
Image-CSharp作为启动项目 - 按 F5 运行
使用说明
基本操作
- 新建图像: 文件 -> 新建 或 Ctrl+N
- 打开图像: 文件 -> 打开 或 Ctrl+O
- 保存图像: 文件 -> 保存 或 Ctrl+S
- 撤销操作: 编辑 -> 撤销 或 Ctrl+Z
- 重做操作: 编辑 -> 重做 或 Ctrl+Y
工具使用
- 选择工具: 从工具箱中选择所需工具
- 调整属性: 在属性面板中调整工具参数
- 应用操作: 在画布上执行相应操作
滤镜应用
- 选择要处理的图像区域(可选)
- 从滤镜菜单选择所需滤镜
- 调整滤镜参数
- 应用滤镜效果
扩展开发
创建自定义滤镜插件
using ImageCSharp.Core.Interfaces;
using SixLabors.ImageSharp;
using System.ComponentModel.Composition;
[Export(typeof(IImagePlugin))]
[Export(typeof(IFilterPlugin))]
public class CustomFilter : IFilterPlugin
{
public string Name => "自定义滤镜";
public string Description => "自定义滤镜描述";
public string Category => "自定义类别";
public Dictionary<string, object> Parameters { get; set; }
public Image ProcessImage(Image image)
{
// 实现滤镜逻辑
image.Mutate(x => x.ApplyCustomEffect());
return image;
}
}
批处理脚本示例
using ImageCSharp.Core.Interfaces;
public class BatchProcessor
{
private readonly IImageService _imageService;
public void ProcessDirectory(string directory)
{
var files = Directory.GetFiles(directory, "*.jpg");
foreach (var file in files)
{
var document = _imageService.LoadImage(file);
// 应用滤镜
_imageService.ApplyFilter(document, new GaussianBlurFilter());
// 调整大小
_imageService.ResizeImage(document, 800, 600);
// 保存
_imageService.SaveImage(document, file);
}
}
}
许可证
本项目采用 MIT 许可证。
贡献
欢迎提交Issue和Pull Request来改进项目!
联系
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件到项目维护者
注意: 这是一个演示项目,展示了如何使用WPF和Material Design创建图像处理软件。在实际生产环境中,可能需要更多的错误处理、性能优化和功能完善。