# Python 绘图软件(图形编辑器) 一个功能强大的 Python 图形编辑器,类似简化版的 Photoshop,提供丰富的绘图和图像处理功能。 ## ✨ 功能特性 ### 🎨 绘图工具 - **画笔工具** - 可调节大小和颜色的自由绘画 - **铅笔工具** - 精细的像素级绘图 - **橡皮擦** - 可调节大小的擦除工具 - **直线工具** - 绘制直线段 - **矩形工具** - 绘制矩形和正方形 - **椭圆工具** - 绘制圆形和椭圆 - **填充工具** - 智能区域填充(洪水填充算法) - **取色器** - 从图像中吸取颜色 ### 🖼️ 图层管理 - 创建/删除图层 - 图层可见性控制 - 图层上下移动 - 图层选择 - 透明图层支持 ### 🌈 滤镜效果 - **高斯模糊** - 柔和模糊效果 - **锐化** - 增强图像细节 - **边缘检测** - 提取图像轮廓 - **浮雕** - 3D 浮雕效果 ### 🎛️ 图像调整 - **亮度调整** - 增强/减弱亮度 - **对比度调整** - 调整对比度 - **饱和度调整** - 调整色彩饱和度 ### 📁 文件操作 - 新建画布 - 打开图像文件(支持 PNG、JPG、BMP、GIF) - 保存为多种格式 - 导出功能 - 撤销/重做(最多 20 步) ### 🎯 其他功能 - 自定义画笔大小(1-100) - 颜色选择器 - 实时状态显示 - 800x600 画布尺寸 ## 📦 安装依赖 ```bash pip install -r requirements_draw.txt ``` 主要依赖: - **Pillow** - 图像处理 - **numpy** - 数值计算(用于填充算法) - **tkinter** - GUI 界面(Python 自带) ## 🚀 快速开始 ### 方法 1:运行主程序 ```bash python draw_app.py ``` ### 方法 2:直接运行编辑器 ```bash python graphic_editor.py ``` ## 📖 使用指南 ### 基本绘图流程 1. **选择工具** - 点击左侧工具栏选择需要的工具 - 画笔/铅笔用于自由绘画 - 形状工具用于绘制几何图形 2. **设置颜色** - 点击颜色框打开颜色选择器 - 或使用取色器从画布取色 3. **调整画笔大小** - 拖动滑块调整画笔大小 - 实时显示当前大小数值 4. **开始绘画** - 在画布上按住鼠标左键并拖动 - 绘制形状时释放鼠标完成绘制 ### 图层操作 1. **创建新图层** - 点击右侧图层面板的 "+" 按钮 - 新图层将出现在图层列表顶部 2. **选择图层** - 点击图层列表中的图层名称 - 当前选中图层前有 ▶️ 标记 3. **显示/隐藏图层** - 点击 👁️ 按钮切换可见性 - 隐藏的图层显示为 ❌ 4. **调整图层顺序** - 使用 ⬆️ 和 ⬇️ 按钮上下移动 - 上层图层会遮挡下层 5. **删除图层** - 选择图层后点击 "-" 按钮 - 至少保留一个图层 ### 应用滤镜 1. 选择要处理的图层 2. 在右侧滤镜面板选择滤镜 3. 滤镜会立即应用到当前图像 4. 可使用撤销功能恢复 ### 图像调整 1. 选择要调整的图层 2. 在调整面板选择调整类型 3. 每次点击会增强效果(1.2 倍) 4. 可多次点击累加效果 ### 撤销和重做 - **撤销** - 点击 "↩️ 撤销" 按钮 - **重做** - 点击 "↪️ 重做" 按钮 - 最多支持 20 步历史记录 ## 💡 使用技巧 ### 1. 精确绘图 - 使用铅笔工具进行像素级精确绘图 - 放大图像可获得更好的控制 ### 2. 颜色搭配 - 使用取色器快速匹配颜色 - 常用颜色可以记录下来重复使用 ### 3. 图层策略 - 背景放在最底层 - 主要元素放在中间层 - 细节和特效放在顶层 - 不同元素使用不同图层便于修改 ### 4. 填充技巧 - 填充区域需要是封闭的 - 颜色差异过大会影响填充效果 - 可先用画笔勾勒轮廓再填充 ### 5. 滤镜使用 - 轻微模糊可以平滑图像 - 锐化适合处理模糊的照片 - 边缘检测可用于提取线稿 - 滤镜效果可以叠加使用 ## 🔧 技术架构 ### 核心类 - **GraphicEditor** - 主编辑器类 - 管理所有 UI 组件 - 处理用户输入 - 协调各模块工作 - **Layer** - 图层数据类 - 存储图层图像数据 - 管理可见性和透明度 - 图层 ID 和名称 - **ToolType** - 工具枚举 - 定义所有可用工具 - 工具类型标识 ### 关键技术 1. **Tkinter GUI** - 跨平台 GUI 框架 - 事件驱动编程 - 画布组件绘图 2. **Pillow 图像处理** - 图像创建和保存 - 滤镜应用 - 图像增强 3. **NumPy 数组操作** - 像素级图像处理 - 洪水填充算法 - 颜色计算 4. **洪水填充算法** - BFS(广度优先搜索)实现 - 颜色容差处理 - 性能优化 ## 📊 性能说明 ### 画布尺寸 - 默认:800x600 像素 - 可根据需要修改 ### 内存占用 - 空画布:约 2MB - 复杂图像:10-20MB - 图层数量:建议不超过 20 个 ### 响应性 - 画笔绘制:实时响应 - 滤镜应用:1-3 秒 - 文件保存:1-2 秒 ## 🐛 已知限制 1. 不支持图层混合模式 2. 不支持文字工具(已预留接口) 3. 不支持选区工具 4. 不支持变换(缩放、旋转) 5. 滤镜效果不可调节参数 ## 🚀 未来扩展 ### 计划功能 - [ ] 文字工具 - [ ] 选区工具 - [ ] 图层混合模式 - [ ] 图像变换(缩放、旋转、裁剪) - [ ] 可调节参数的滤镜 - [ ] 自定义画布尺寸 - [ ] 渐变填充 - [ ] 图案填充 - [ ] 画笔形状自定义 - [ ] 压力感应支持 ### 性能优化 - [ ] 多线程处理 - [ ] GPU 加速 - [ ] 图像分块处理 - [ ] 内存优化 ## 📝 示例项目 ### 示例 1:简单绘图 ```python # 运行程序 python draw_app.py # 1. 选择画笔工具 # 2. 选择颜色 # 3. 在画布上绘画 # 4. 保存为 PNG ``` ### 示例 2:多层绘图 ```python # 1. 在背景层绘制底色 # 2. 新建图层绘制主体 # 3. 再新建图层添加细节 # 4. 调整图层顺序 # 5. 合并导出 ``` ### 示例 3:应用滤镜 ```python # 1. 打开图片 # 2. 应用高斯模糊 # 3. 应用边缘检测 # 4. 调整对比度 # 5. 保存结果 ``` ## 🎓 学习资源 ### Tkinter 文档 - 官方文档:https://docs.python.org/3/library/tkinter.html - Tkinter 教程:https://www.pythontutorial.net/tkinter/ ### Pillow 文档 - 官方文档:https://pillow.readthedocs.io/ - 图像处理教程:https://pillow.readthedocs.io/en/stable/handbook/tutorial.html ### NumPy 文档 - 官方文档:https://numpy.org/doc/ - 数组操作指南:https://numpy.org/doc/stable/user/absolute_beginners.html ## 🤝 贡献 欢迎提交问题和功能建议! ## 📄 许可证 MIT License ## 📧 联系方式 如有问题,请通过 Gitea 仓库提交 issue。 ## 🖼️ 界面预览 ``` ┌─────────────────────────────────────────────────────────┐ │ Python 图形编辑器 │ ├──────────┬──────────────────────────┬──────────────────┤ │ 工具 │ │ 图层 │ │ 🖌️ 画笔 │ │ ▶️👁️ 图层 1 │ │ ✏️ 铅笔 │ 画布区域 │ 👁️ 背景 │ │ 🧹 橡皮 │ (800x600) │ │ │ 📏 直线 │ │ + - 👁️ ⬆️ ⬇️ │ │ ⬜ 矩形 │ ├──────────────────┤ │ ⭕ 椭圆 │ │ 滤镜 │ │ 🪣 填充 │ │ 🌫️ 高斯模糊 │ │ 💉 取色 │ │ 🔍 锐化 │ ├──────────┤ │ 🌓 边缘检测 │ │ 颜色 │ │ 🎨 浮雕 │ │ [颜色框] │ ├──────────────────┤ │ 大小 │ │ 图像调整 │ │ [滑块] │ │ ☀️ 亮度 │ ├──────────┤ │ 🎭 对比度 │ │ 操作 │ │ 🎨 饱和度 │ │ ↩️ 撤销 │ ├──────────────────┤ │ ↪️ 重做 │ │ 文件 │ │ 🗑️ 清除 │ │ 📂 新建 │ └──────────┴──────────────────────────┤ 💾 保存 │ │ 📤 导出 │ ┌─────────────────────────────────────┴──────────────────┤ │ 状态栏:就绪 │ └─────────────────────────────────────────────────────────┘ ``` ## 🎯 总结 这是一个功能完善的 Python 图形编辑器,适合: - 学习图像处理原理 - 快速原型设计 - 简单图像编辑 - 教学演示 - 个人绘画 享受绘图的乐趣!🎨✨