用Python调用ComfyUI API,一键生成图片攻略使用

1、comfyui设置

打开comfyui,记录下对应的端口,设置开发者模式

打开一条workflow工作流,这里以comfyui自带的工作流为例,保存为api格式

再次打开api格式工作流(注:这里一定再次点击查看是否能运行正常,因为有的节点可能在api格式中无法运作),确定可以在comfyui中正常启动就可以下一步了

2、python设置

新建一个python脚本,将以下内容粘贴进去

替换相应的参数,比如:

  • workflowfile文件名
  • COMFYUI_ENDPOINT地址,

WORKING_DIR输出文件的目录是对应脚本文件的

接着打开存储工作流api信息的josn文件

找到我们要修改的参数,比如我要修改正向提示词参数

可以看到其对应的键值位置是[“6”][“inputs”][“text”]

就可以设置对应的参数,在函数中解析替换这个键值

最后还设置了一个文件’prompt.xlsx’,方便写入大量的prompt进行替换

这样就可以解放双手,开始自由出图了

关键步骤总结:

  1. ComfyUI 设置:
    • 确认 ComfyUI 的端口。
    • 打开一个工作流并保存为 API 格式,确保所有节点在 API 格式下正常运行。
  2. Python 脚本配置:
    • 利用 websocket-clienturllib 模块实现对 ComfyUI API 的调用。
    • 实现队列消息发送 (queue_prompt)、图片获取 (get_image)、历史记录解析 (get_history) 等功能。
    • 利用 parse_workflow 函数解析工作流 JSON 文件,动态修改其中的参数并生成图像。
  3. 批量生成支持:
    • 从 CSV 文件中读取 prompts 列表,实现批量生成和存储。
    • 支持设置正向提示词、种子值等参数。
  4. 提示与参数替换:
    • 根据 JSON 工作流中的键值位置,例如 ["6"]["inputs"]["text"],修改提示词等配置。
    • 输出文件路径根据时间戳动态生成。

优化与注意事项:

  1. 错误处理:
    • 脚本中对 API 请求和 WebSocket 通信的异常处理较少,建议在 queue_promptws.recv() 等函数中添加 try-except 块以捕获可能的网络错误。
  2. JSON 文件路径管理:
    • 可通过 os.path 模块确保 JSON 文件路径在不同环境下的兼容性。
  3. 改进用户交互:
    • 提供更加人性化的参数输入和输出,比如通过命令行参数或配置文件设置 COMFYUI_ENDPOINT 等参数。
  4. 多线程优化:
    • 当前生成流程是串行的,若有性能瓶颈,可以利用 Python 的 concurrent.futures 模块实现并行化处理,提高生成速度。
  5. 图片/视频二进制数据解析:
    • 针对 ws.recv() 返回的二进制数据,可以在处理时添加对其格式的验证,避免可能的解析错误。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注