Files

9.3 KiB
Raw Permalink Blame History

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. 设置颜色

    • 点击颜色框打开颜色选择器
    • 或使用取色器从画布取色
  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 draw_app.py

# 1. 选择画笔工具
# 2. 选择颜色
# 3. 在画布上绘画
# 4. 保存为 PNG

示例 2:多层绘图

# 1. 在背景层绘制底色
# 2. 新建图层绘制主体
# 3. 再新建图层添加细节
# 4. 调整图层顺序
# 5. 合并导出

示例 3:应用滤镜

# 1. 打开图片
# 2. 应用高斯模糊
# 3. 应用边缘检测
# 4. 调整对比度
# 5. 保存结果

🎓 学习资源

Tkinter 文档

Pillow 文档

NumPy 文档

🤝 贡献

欢迎提交问题和功能建议!

📄 许可证

MIT License

📧 联系方式

如有问题,请通过 Gitea 仓库提交 issue。

🖼️ 界面预览

┌─────────────────────────────────────────────────────────┐
│  Python 图形编辑器                                       │
├──────────┬──────────────────────────┬──────────────────┤
│ 工具     │                          │ 图层             │
│ 🖌️ 画笔  │                          │ ▶️👁️ 图层 1     │
│ ✏️ 铅笔  │     画布区域             │   👁️ 背景       │
│ 🧹 橡皮  │     (800x600)            │                  │
│ 📏 直线  │                          │ + - 👁️ ⬆️ ⬇️    │
│ ⬜ 矩形  │                          ├──────────────────┤
│ ⭕ 椭圆  │                          │ 滤镜             │
│ 🪣 填充  │                          │ 🌫️ 高斯模糊     │
│ 💉 取色  │                          │ 🔍 锐化          │
├──────────┤                          │ 🌓 边缘检测      │
│ 颜色     │                          │ 🎨 浮雕          │
│ [颜色框] │                          ├──────────────────┤
│ 大小     │                          │ 图像调整         │
│ [滑块]   │                          │ ☀️ 亮度          │
├──────────┤                          │ 🎭 对比度        │
│ 操作     │                          │ 🎨 饱和度        │
│ ↩️ 撤销  │                          ├──────────────────┤
│ ↪️ 重做  │                          │ 文件             │
│ 🗑️ 清除  │                          │ 📂 新建          │
└──────────┴──────────────────────────┤ 💾 保存          │
                                      │ 📤 导出          │
┌─────────────────────────────────────┴──────────────────┤
│ 状态栏:就绪                                            │
└─────────────────────────────────────────────────────────┘

🎯 总结

这是一个功能完善的 Python 图形编辑器,适合:

  • 学习图像处理原理
  • 快速原型设计
  • 简单图像编辑
  • 教学演示
  • 个人绘画

享受绘图的乐趣!🎨✨