a4f8f78a0eadd4e932d43f1c40cf17f4d240a12b
- 新增 Photopea 蒙版编辑模式(双图层:参考图像 + 蒙版层) - 使用 channel=rgb 和 channel=a 分离加载,绑过 Canvas premultiplied alpha 问题 - UPNG.js 集成,保存时保留 Alpha=0 的 RGB 数据 - 支持羽化效果(半透明蒙版) - 修复蒙版边界框检测:alpha < 255 都计入边界 - 右键菜单分离:编辑图像 / 编辑蒙版
ComfyUI Inpaint Region Editor
增强版遮罩编辑器:集成 Photopea 图像编辑 + 可拖动选区调整
⚠️ 开发中 | 本文档描述的是目标功能,当前版本功能有限
📋 完整技术文档:见
docs/HANDOFF.md
📚 文档索引
| 文档 | 说明 | 目标读者 |
|---|---|---|
docs/QUICKSTART.md |
⚡ 5 分钟快速开始 | 新接手开发的工程师 |
docs/HANDOFF.md |
📋 完整交接文档 | 开发团队 |
docs/implementation-plan.md |
💻 详细实现方案 | 后端/前端开发 |
docs/technical-validation.md |
🧪 技术验证清单 | 测试工程师 |
DEVLOG.md |
📔 开发日志 | 了解历史问题 |
🎯 功能特性
- 🎨 Photopea 集成 - 完整的 Photoshop 级编辑功能(液化、仿制图章等)
- 📐 可拖动选区 - 手动调整参考区域位置(不再只是中心扩散)
- 🔄 自动蒙版检测 - 从 Alpha 通道提取,无蒙版时友好报错
- 🎭 选区自动计算 - 选区 = 遮罩边界 + 扩散像素数
📦 安装
方法 1:ComfyUI Manager(推荐)
在 ComfyUI Manager 中搜索 "Inpaint Region Editor"。
方法 2:手动安装
cd ComfyUI/custom_nodes
git clone https://github.com/YOUR_USERNAME/ComfyUI-InpaintRegionEditor.git
重启 ComfyUI。
🚀 使用方法
- 添加 Inpaint Region Editor 节点
- 上传图像(需要带 Alpha 通道的 PNG)
- 右键点击节点 → "打开 Photopea 编辑"
- 在 Photopea 中编辑图像和蒙版
- 保存返回节点
- 调整扩散像素数或拖动选区框
- 执行工作流
📤 节点输出
| 输出 | 类型 | 说明 |
|---|---|---|
image |
IMAGE | 编辑后的图像 |
mask |
MASK | 局部重绘蒙版 |
region_top |
INT | 选区顶部坐标 |
region_left |
INT | 选区左侧坐标 |
region_width |
INT | 选区宽度 |
region_height |
INT | 选区高度 |
📘 核心概念
| 概念 | 目的 | 说明 |
|---|---|---|
| 遮罩 (Mask) | 定义重绘区域 | AI 在这个区域内生成新内容 |
| 选区 (Region) | 定义参考区域 | AI 参考这个区域内的原图内容 |
约束:选区必须 >= 遮罩
⚠️ 当前状态
已完成
- 基础节点逻辑(
nodes.py) - Photopea iframe 集成
- 右键菜单打开 Photopea
- 图像预览(自己渲染,不依赖 ComfyUI)
- 选区框绘制(橙色)+ 遮罩区域显示(红色)
- Alpha 通道自动检测蒙版
- 选区框拖动功能
待完善
- 拖动体验优化(边界检测、视觉反馈)
- 图像缩放/放大查看
- Photopea 编辑后的图像刷新
- 完整工作流测试
🔧 技术细节
- 使用 Photopea postMessage API
- 所有消息 origin 都经过验证(只接受
https://www.photopea.com) - 图像处理在浏览器本地完成
⚡ 限制
- 需要网络连接(Photopea 从 CDN 加载)
- 首次加载约 10MB,之后缓存
- Photopea 无法通过脚本直接访问图层蒙版(官方 API 限制)
🙏 致谢
- Photopea by Ivan Kutskir
- ComfyUI
- ComfyUI-Impact-Pack - 选区框实现参考
📄 许可证
MIT License - 详见 LICENSE 文件。
Photopea 使用条款
- API 完全免费,可用于任何目的(包括商业用途)
- 你的作品完全归你所有
- 无需标注使用了 Photopea(但建议标注)
📝 更新日志
详见 CHANGELOG.md。
最后更新:2026-03-02
Languages
JavaScript
90.5%
Python
9.5%