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