# Multi-image_fusion **Repository Path**: glddy/multi-image_fusion ## Basic Information - **Project Name**: Multi-image_fusion - **Description**: 一个多图融合模块,接收三张图片,包含一张背景图、两张角色图,生成一张融合图 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-15 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Multi-image Fusion Project 项目介绍 本项目是一款基于 ComfyUI 的多图融合模块,专注于接收三张图片(一张背景图和两张角色图),借助一系列图像处理与生成技术,打造出高质量的融合图像。该项目充分发挥 ComfyUI 强大的节点式工作流设计优势,融合 flux.1 kontext 等 AI 模型,实现了灵活且高效的图像融合功能。无论是在创意设计、影视后期制作还是广告宣传等领域,都能为用户提供便捷、优质的图像融合解决方案。 软件架构 ### 技术栈 * **ComfyUI**:作为核心框架,提供了可视化的工作流设计界面,让用户能够直观地搭建和调整图像融合流程,同时拥有丰富的节点库,满足各种复杂的图像处理需求。 * **flux.1 kontext**:凭借其卓越的图像生成能力,为生成图像的质量提供了坚实保障,能让融合后的图像在细节、色彩等方面表现出色。 * **Python**:用于编写客户端代码,实现与 ComfyUI 服务器的顺畅交互,确保数据的传输和处理高效进行。 * **API**:通过定义标准化的 API 接口,极大地方便了进行自动化测试和与其他系统的集成,提升了项目的可扩展性。 * **WebSocket 库**:在 Python 调用 ComfyUI API 的过程中,发挥着关键作用,为客户端与服务器之间的实时通信提供了有力支持。 ### 架构概览 1. **ComfyUI 工作流设计**: * **LoadImage**:负责加载输入的图片,包括背景图和角色图,是整个工作流的起始环节,确保后续处理有正确的素材。 * **VAEEncode/Decode**:对图片进行编码和解码操作。编码能将图像转换为潜在空间的表示,便于进行各种处理;解码则将处理后的潜在表示还原为图像,保证图像的可观赏性。 * **KSampler**:利用采样器进行图像生成,通过合理的参数设置,能够生成符合预期的图像内容,提升融合效果。 * **Compositor**:这是实现多图融合的核心节点,它能够智能地将背景图和角色图进行融合,处理好边缘过渡、光影协调等问题,使融合后的图像自然逼真。 * **SaveImage**:将最终生成的融合图像保存下来,方便用户查看、使用和分享。 1. **Python 客户端**: * **ComfyUIClient**:封装了与 ComfyUI 服务器交互的通用逻辑,涵盖连接服务器、上传图片、提交任务、监控任务执行状态以及下载结果等功能,简化了客户端与服务器的通信过程。 * **run\_workflow**:作为核心方法,用于执行特定的工作流。它按照预设的流程和参数,调用相关的节点和功能,确保多图融合任务顺利完成。 关键技术详解 ### WebSocket 库在 Python 调用 ComfyUI API 中的应用 在 Python 调用 ComfyUI API 时,WebSocket 库扮演着至关重要的角色。相较于传统的 HTTP 请求,WebSocket 提供了全双工的通信渠道,允许客户端和服务器之间进行实时、持续的双向数据传输。 具体来说,其作用主要体现在以下几个方面: * **实时任务状态监控**:当客户端向 ComfyUI 服务器提交多图融合任务后,服务器的处理过程可能需要一定时间。通过 WebSocket 连接,客户端能够实时接收到服务器发送的任务状态更新,如任务开始、正在处理、处理完成、出现错误等信息,让用户能够及时了解任务的进展情况,而无需频繁地向服务器发送请求进行查询,大大减少了网络开销和延迟。 * **高效的数据传输**:在图像融合过程中,可能会涉及到一些中间数据或实时的日志信息传输。WebSocket 的持久连接特性使得这些数据能够高效、快速地在客户端和服务器之间传递,保证了数据传输的及时性和完整性。 * **双向交互能力**:除了接收服务器的状态信息外,客户端还可以通过 WebSocket 向服务器发送控制指令,如取消任务、调整任务参数等,实现了更灵活、便捷的交互方式,提升了用户对任务的控制能力。 在实际使用中,通过 WebSocket 库建立与 ComfyUI 服务器的连接后,客户端可以订阅特定的事件,当服务器端的任务状态发生变化时,就会主动向客户端推送相关消息,客户端再对这些消息进行解析和处理,从而实现对任务的实时监控和管理。 ### flux.1 kontext 模型说明 flux.1 kontext 是一款性能卓越的图像生成模型,在本项目的多图融合工作流中发挥着核心作用,其主要特点如下: * **强大的图像生成能力**:该模型能够基于输入的图像和文本提示,生成高质量、细节丰富且符合逻辑的图像内容。在多图融合场景中,它能够准确理解背景图和角色图的特征,以及用户对融合效果的要求,生成自然、协调的融合图像,使角色与背景能够完美融合,不存在明显的违和感。 * **出色的语义理解能力**:能够精准解析文本提示中的语义信息,将用户的描述转化为具体的图像元素。例如,当用户要求 “让图中女人拿着一瓶啤酒坐在沙发上” 时,flux.1 kontext 模型能够准确把握 “拿着啤酒”“坐在沙发上” 等关键信息,并在生成的融合图像中准确呈现。 * **优秀的细节处理能力**:在图像生成过程中,能够对图像的细节进行精细处理,如角色的表情、服饰纹理、背景的光影效果等,使生成的图像具有较高的真实感和观赏性。 * **良好的兼容性**:能够与 ComfyUI 框架以及工作流中的其他节点(如 VAEEncode/Decode、KSampler 等)良好配合,在整个多图融合流程中稳定运行,确保了工作流的顺畅执行和最终融合图像的质量。 正是凭借这些优势,flux.1 kontext 模型成为了本项目中实现高质量多图融合的关键支撑,能够满足不同场景下对图像融合效果的高要求。 安装教程 ### 环境准备 1. **下载 ComfyUI Portable 版本**: * 访问[Com](https://github.com/comfyanonymous/ComfyUI/releases)[fyUI](https://github.com/comfyanonymous/ComfyUI/releases)[ Relea](https://github.com/comfyanonymous/ComfyUI/releases)[ses](https://github.com/comfyanonymous/ComfyUI/releases)下载最新版本的 ComfyUI Portable。建议选择稳定版本,以保证软件的正常运行。 * 将下载的文件解压至指定目录,解压过程中注意路径不要包含中文字符或特殊符号,避免出现解压错误或软件运行异常。 1. **安装 ComfyUI Manager**: * 打开终端,导航到`ComfyUI/custom_nodes`目录。可以通过命令行切换目录,确保路径准确无误。 * 执行命令`git clone ``https://github.com/ltdrdata/ComfyUI-Manager`` comfyui-manager`来克隆相关仓库。在执行命令时,确保网络连接稳定,避免克隆失败。 * 进入`ComfyUI_windows_portable`目录,双击`install-manager-for-portable-version.bat`批处理文件,等待运行完毕后重启 ComfyUI。重启后,ComfyUI Manager 将生效,方便后续管理节点和模型。 1. **部署模型文件**: * 从魔塔社区([https://www.mod](https://www.modelscope.cn/my/overview)[elsco](https://www.modelscope.cn/my/overview)[pe.cn](https://www.modelscope.cn/my/overview)[/my/o](https://www.modelscope.cn/my/overview)[vervi](https://www.modelscope.cn/my/overview)[ew](https://www.modelscope.cn/my/overview))下载所需的模型文件,其中包括 flux.1 kontext 模型。下载时,注意选择与项目兼容的模型版本。 * 将模型文件放置在相应目录: * `ComfyUI/models/unet/`(放置 FLUX 等模型文件) * `ComfyUI/models/models/vae/`(放置 VAE 模型) * `ComfyUI/models/models/clip/`(放置 CLIP 模型) * `ComfyUI/models/models/loras/`(放置 LoRA 微调模型) 确保模型文件放置正确,否则软件可能无法正常调用模型进行图像处理。 确保模型文件放置正确,否则软件可能无法正常调用模型进行图像处理。 1. **启动服务**: * 进入`comfyui`目录,点击`run_nvidia_gpu.bat`文件运行。启动过程中,终端会显示相关的启动信息,等待服务启动完成。如果启动失败,检查是否有依赖项缺失或模型文件放置错误。 ### Python 客户端安装 1. **克隆项目仓库**: ``` git clone https://gitee.com/yourusername/multi-image-fusion.git cd multi-image-fusion ``` 执行上述命令时,确保本地已经安装了 Git 工具,并且网络能够正常访问 Gitee 仓库。 1. **安装依赖**: ``` pip install -r requirements.txt ``` 安装过程中,pip 会自动下载并安装所需的依赖包,其中包括 WebSocket 相关库。如果出现安装失败的情况,可以尝试更新 pip 版本或检查网络连接。 1. **运行示例代码**: ``` python backend/comfyui\_client.py ``` 运行示例代码可以验证客户端是否安装成功以及与服务器的连接是否正常。如果运行过程中出现错误,根据错误提示进行排查和解决。 使用说明 ### 运行多图融合任务 1. **初始化客户端**: ``` from backend.comfyui\_client import ComfyUIClient client = ComfyUIClient("127.0.0.1", 8188) ``` 这里通过指定服务器的 IP 地址和端口号来初始化客户端,确保客户端能够正确连接到 ComfyUI 服务器,其中客户端内部已通过 WebSocket 库实现与服务器的实时通信。 1. **定义节点映射和输入参数**: ``` ttp\_node\_mapping = { "prompt": {"node\_id": "16", "field": "text"}, "unet\_loader": {"node\_id": "1", "field": "unet\_name"}, "sampler\_seed": {"node\_id": "13", "field": "seed"}, "sampler\_denoise": {"node\_id": "13", "field": "denoise"}, "save\_image": { "node\_id": "68", "field": "filename\_prefix", }, } ttp\_inputs = { "prompt": "让图中女人拿着一瓶啤酒坐在沙发上,拉近拍摄距离,保持角色不变,调整为正确的人体比例", "unet\_loader": "flux1-kontext-dev.safetensors", # 指定使用flux.1 kontext模型 "sampler\_seed": int(time.time()), "sampler\_denoise": 1.0, } ``` 节点映射定义了输入参数与 ComfyUI 工作流中节点的对应关系,输入参数则具体指定了图像融合的要求,如 prompt 描述了融合后的图像效果,unet\_loader 指定了使用的 flux.1 kontext 模型等。 1. **执行工作流**: ``` generated\_images = client.run\_workflow( workflow\_api\_json\_path="backend/多图融合(api).json", node\_mapping=ttp\_node\_mapping, inputs=ttp\_inputs, output\_dir="generated\_images/multi\_imgs", ) print(f"多图融合成功!图片保存在: {generated\_images}") ``` 执行工作流时,需要指定工作流的 JSON 文件路径、节点映射、输入参数以及输出目录。执行成功后,会返回生成图像的保存路径,方便用户查看。 获取工作流的方式 获取本项目中使用的多图融合工作流(包含 flux.1 kontext 模型节点配置)的方式如下: 1. **通过 ComfyUI 界面导出**:在 ComfyUI 中搭建好包含 flux.1 kontext 模型的多图融合工作流后,通过界面中的导出功能,将工作流导出为 JSON 格式的文件。具体操作是在 ComfyUI 界面中,找到工作流的相关菜单或按钮,选择 “导出工作流” 选项,然后指定保存路径,即可得到工作流的 JSON 文件,该文件包含了工作流中各个节点的配置信息、节点之间的连接关系等。 2. **项目仓库获取**:本项目的仓库([https://gitee.com/yourusername/multi-image-fusion.git](https://gitee.com/yourusername/multi-image-fusion.git))中已包含相关的工作流文件(如 “backend / 多图融合 (api).json”),克隆项目仓库后,可直接在相应目录下获取该工作流文件。 3. **自定义搭建后保存**:用户可以根据自己的需求,在 ComfyUI 中使用 flux.1 kontext 模型等节点自定义搭建多图融合工作流,搭建完成并测试无误后,通过保存功能将工作流保存为 JSON 文件,以便在 Python 客户端中调用。 参与贡献 欢迎各位开发者参与本项目的贡献,共同完善和优化多图融合功能。 1. **Fork 本仓库**:在 Gitee 上 fork 本项目至你的个人空间,这样你就可以在自己的仓库中进行修改和开发,而不影响原项目。 2. **新建分支**:在你的 fork 仓库中,新建一个分支(如`feat-xxx`)。使用有意义的分支名称,便于区分不同的功能开发或问题修复。 3. **提交代码**:在新分支中进行代码开发和测试,确保代码的质量和稳定性。完成后,提交代码并填写清晰的提交信息,说明修改的内容和目的。 4. **新建 Pull Request**:将你的分支代码提交至上游仓库,创建 Pull Request 并详细描述你的修改内容。项目维护者会对你的代码进行审核,审核通过后将合并到主分支。 特别说明 * **多语言支持**:使用`Readme_XXX.md`来支持不同的语言,例如`Readme_en.md`和`Readme_zh.md`。这样可以方便不同语言背景的用户了解项目。 * **官方资源**: * Gitee 官方博客:[blog.gitee.com](https://blog.gitee.com) * 优秀开源项目探索:[https://gitee.com/explore](https://gitee.com/explore) * GVP(Gitee 最有价值开源项目):[https://gitee.com/gvp](https://gitee.com/gvp) * Gitee 官方使用手册:[https://gitee.com/help](https://gitee.com/help) * Gitee 封面人物:[https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) 这些官方资源可以为开发者提供更多关于 Gitee 的使用技巧、开源项目的动态以及学习交流的机会。 联系我们 如有任何问题或建议,请通过以下方式联系我们: * **邮箱**:your-email@example.com * **GitHub Issues**:提交 Issue 至[项目 Issues 页面](https://gitee.com/yourusername/multi-image-fusion/issues) 我们会尽快回复您的反馈,感谢您对本项目的关注和支持!期待与您一起探索更多图像处理和生成的创新应用。 > (注:文档部分内容可能由 AI 生成)