API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码

前言

工具介绍

首先 comfyui你是少不了的,这个是工作流的后端支持,用这个去调试工作流和生成API可调用文件

前端我们就用很流行的gradio吧,什么你一时半会没有学gradio的计划,没事,笔者也没系统学过,我干脆直接让chatgpt写前端gradio了,哈哈~

所有的AI设计工具,安装包、模型和插件,都已经整理好了,👇获取~在这里插入图片描述

comfyui

首先你需要打开comfyui的开发者模式,就是这个地方

开启后会主页设置中会多出一个【保存(API格式)】,让后将你要做应用的工作流保存(API格式)

这里我们做一个【 一张图生成人偶的服务】,使用的是 rui的 《Cute you!》By Rui,欢迎大家去b站搜 rui400,我已关注哈哈,工作流如下

前端代码

虽然我会gradio(O(∩_∩)O哈哈~),但是为了简便我让chatgpt给我写了

帮我使用gradio写一个 页面,功能是:上传一张照片,然后提交给后台,``后台保存图片到固定目录,并且图片名字不能能重复,``并返回另一张照片的链接,前端将两张照片同事显示出来

代码如下

import os``import gradio as gr``from datetime import datetime``from PIL import Image``import requests``from io import BytesIO``   ``# 设置图片保存目录``UPLOAD_DIRECTORY = "uploaded_images"``if not os.path.exists(UPLOAD_DIRECTORY):`    `os.makedirs(UPLOAD_DIRECTORY)``   ``# 用于生成唯一图片文件名的函数``def generate_unique_filename(extension):`    `timestamp = datetime.now().strftime("%Y%m%d%H%M%S%f")`    `return f"{timestamp}.{extension}"``   ``# 处理图片上传的函数``def process_image(image):`    `# 保存上传的图片`    `extension = image.name.split('.')[-1]`    `unique_filename = generate_unique_filename(extension)`    `image_path = os.path.join(UPLOAD_DIRECTORY, unique_filename)`    `with open(image_path, "wb") as image_file:`        `image_file.write(image.read())`    `    # 返回另一张图片的链接(此处为示例,实际应用中应替换为真实图片链接)`    `response_image_url = "https://via.placeholder.com/150"  # 示例图片链接`    `response = requests.get(response_image_url)`    `response_image = Image.open(BytesIO(response.content))`    `    # 返回上传的图片和网络上的图片`    `return image_path, response_image``   ``# 创建Gradio接口``iface = gr.Interface(`    `fn=process_image,`    `inputs=gr.inputs.Image(type="file"),`    `outputs=[`        `gr.outputs.Image(type="file", label="Uploaded Image"),`        `gr.outputs.Image(type="pil", label="Response Image")`    `],`    `live=False``)``   ``# 运行应用``iface.launch()

基本就是,上传一张图片,然后保存,给工作流用,工作流处理后返回原图和生成的图,这个代码添加一下我们的方法就可以用了,界面如下

还是很不错的,哈哈~

comfyui API调用代码

1、读取工作流

import json``   ``# 这个地方是你工作流的地址,服务器行写路径``prompt_f = r"人偶-api.json"``   ``with open(prompt_f,"r",encoding="utf-8") as f:`    `prompt = json.loads(f.read())

2、设置上传图片

prompt["331"]["inputs"]["image"] = image_url``prompt["432"]["inputs"]["image"] = image_url

这给地方要注意,看看你的工作流的输入图片的节点是多少,我的是331和432

3、请求工作流

import requests``   ``#comfyui地址``url = "http://127.0.0.1:8188/"``p = {"prompt":prompt}``respone = requests.post(url=url+"prompt",json=p)``respone

4、获取prompt_id

prompt_id = respone.json()["prompt_id"]``prompt_id

这个地方获取prompt_id是为了后边获取处理图片做准备,因为工作流执行需要时间,不用时时等待返回,排队处理就好了,后边使用prompt_id去获取结果

5、获取结果

respone = requests.get(url=url+"history/"+prompt_id)``respone.json()

在执行历史中获取结果,展示,这个地方,做成服务的话,你可以循环探测这个接口直到有结果,没有结果他就一直为{},可以设置5s睡眠再访问

6、解析图片

image_name = respone.json()[prompt_id]['outputs']['456']["images"][0]["filename"]``image_url = url + 'view?filename='+image_name+"&subfolder=&type=output"``image_url

这个地方要注意,返回结果在 prompt_id 下的outputs中,但是你要看看是哪个id下,我的是456

ok,到这 后端就ok了

组装程序

将这个后端处理代码,集成到gradio中

# 处理图片上传的函数``def process_image(image):`    `# 保存上传的图片`    `# print(image)`    `# extension = image.split('.')[-1]`    `# unique_filename = generate_unique_filename(extension)`    `# image_path = os.path.join(UPLOAD_DIRECTORY, unique_filename)`    `# with open(image_path, "wb") as image_file:`    `#     image_file.write(image.read())`    `prompt["331"]["inputs"]["image"] = image`    `prompt["432"]["inputs"]["image"] = image``   `    `url = "http://127.0.0.1:8188/"`    `p = {"prompt":prompt}`    `respone = requests.post(url=url+"prompt",json=p)`    `prompt_id = respone.json()["prompt_id"]`    `while True:`        `respone = requests.get(url=url+"history/"+prompt_id)`        `if respone.json() == {}:`            `time.sleep(5)`            `continue`        `image_name = respone.json()[prompt_id]['outputs']['456']["images"][0]["filename"]`        `response_image_url = url + 'view?filename='+image_name+"&subfolder=&type=output"`        `break``   `    `# 返回另一张图片的链接(此处为示例,实际应用中应替换为真实图片链接)`    `# response_image_url = "https://img2.baidu.com/it/u=1814561676,2470063876&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500"  # 示例图片链接`    `response = requests.get(response_image_url)`    `response_image = Image.open(BytesIO(response.content))`    `    # 返回上传的图片和网络上的图片`    `return image, response_image

测试

需要等待一会。。。。。。。。。

哈哈,还不错吧,赶紧试试吧

为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

一、ComfyUI配置指南

  • 报错指南
  • 环境配置
  • 脚本更新
  • 后记

img

二、ComfyUI基础入门

  • 软件安装篇
  • 插件安装篇

img

三、 ComfyUI工作流节点/底层逻辑详解

  • ComfyUI 基础概念理解
  • Stable diffusion 工作原理
  • 工作流底层逻辑
  • 必备插件补全

img

四、ComfyUI节点技巧进阶/多模型串联

  • 节点进阶详解
  • 提词技巧精通
  • 多模型节点串联

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解

  • 图像分辨率
  • 姿势

img

六、ComfyUI超实用SDXL工作流手把手搭建

  • Refined模型
  • SDXL风格化提示词
  • SDXL工作流搭建

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18.04安装cuda11.1(出现c++版本问题)

一、概述 需要使用到ubuntu18.04进行cuda的配置,最新版本的cuda跟pytorch的版本不太适配,所以为了能够复现,我选择了一些老版本的cuda11,其使用的范围更加广泛。将自己 二、具体操作 (一)安装流程 1.官网…

[Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制

目录 一. 认识TCP协议的报头 1.TCP头部格式 2. TCP协议的特点 二. TCP如何封装与分用 TCP 报文封装与解包 如何封装解包,如何分用 分离有效载荷 隐含问题:TCP 与 UDP 报头的区别 封装和解包的逆向过程 如何分用 TCP 报文 如何通过端口号找到绑…

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5,传去服务器后,使用http访问一切正常。但是当开启了https(SSL)后,后台竟然无法登陆进去了。 输入账号密码后,点击登陆,跳转到/e/admin/ecmsadmin.php就变成页面一片…

多线程会在一个事务里面吗?

目录 多线程会在一个事务里面吗? 多线程、数据库事务以及数据库连接之间的关系 Spring的事务管理​​​​​​​ 声明式事务Transactional的实现原理 声明式事务Transactional的失效场景 Transactional注解的方法不是public为什么会失效 Spring AOP的代理机制…

【C++】——继承(下)

【C】——继承(下) 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数,但不是子类的友元函数。也就是说…

【C++】用红黑树模拟实现set与map

目录 一、红黑树的完善: 1、红黑树节点模版的修改: 2、仿函数在模拟实现中的应用: 3、新增迭代器: 4、红黑树中的迭代器实现: 二、set与map的模拟实现: 1、insert: 2、map的[ ]: 三、测…

HTML的介绍

HTML HTML是一种超文本标记语言,超文本是指,除了文本之外,还可能包含图片,音频,或者评注等的 文本形式,比文本强大,通过链接和交互方式来组织和呈现信息.标记语言是指,由标签构成的语言.HTML定义了多种不同的标签,用来表示不同的内容. 标签的介绍: 1.<h3> 三级 </h3&…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案&#xff0c;它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中&#xff0c;常见的设计模式可以分为三大类&#xff1a;创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

云计算第四阶段 CLOUD2周目 01-03

国庆假期前&#xff0c;给小伙伴们更行完了云计算CLOUD第一周目的内容&#xff0c;现在为大家更行云计算CLOUD二周目内容&#xff0c;内容涉及K8S组件的添加与使用&#xff0c;K8S集群的搭建。最重要的主体还是资源文件的编写。 (*^▽^*) 环境准备&#xff1a; 主机清单 主机…

【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Microsoft Visual Studio安装gtest

1. 参考【Windows Visual Studio下安装和使用google test&#xff08;gtest&#xff09;】 https://blog.csdn.net/Bule_Zst/article/details/78420894 2. 编译gtest使用Win32模式。 3. 配置属性&#xff0c;C/C&#xff0c;常规&#xff0c;附加包含目录 …

Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN;阿里云PG发布内置分析引擎

重要更新 1. Azure发布PostgreSQL向量索引扩展DiskANN&#xff0c;声称在构建HNSW/IVFFlat索引上&#xff0c;速度、精准度都超越pg_vector&#xff0c;并解决了pg_vector长期存在的偶发性返回错误结果的问题( [1] )。 2. 阿里云RDS PostgreSQL 发布AP加速引擎&#xff08;rds…

《Programming from the Ground Up》读后感

之所以看这本书&#xff0c;是想了解一些跟汇编相关的知识&#xff0c;打开这本书后就被作者的观点——“If you don’t understand something the first time, reread it. If you still don’t understand it, it is sometimes best to take it by faith and come back to it …

qemu启动busybox虚拟机网络连接配置

一、busybox文件系统网络问题 由于根文件是用busybox构建&#xff0c;所以很多配置文件是没有的&#xff0c;包括部分网络的默认设置。启动虚拟机后只能使用ip命令和ifconfig命令查看网络状态。 二、开启qemu网络支持 想要使虚拟机上网&#xff0c;最简单的方式可以使用 -netde…

Opencv中的直方图(3)直方图比较函数compareHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较两个直方图。 函数 cv::compareHist 使用指定的方法比较两个密集或两个稀疏直方图。 该函数返回 d ( H 1 , H 2 ) d(H_1, H_2) d(H1​,H2​…

南科大分享|大数据技术如何赋能大模型训练及开发

嘉宾介绍 张松昕&#xff0c;南方科技大学统计与数据科学系研究学者&#xff0c;UCloud 顾问资深算法专家&#xff0c;曾任粤港澳大湾区数字经济研究院访问学者&#xff0c;主导大模型高效分布式训练框架的开发&#xff0c;设计了 SUS-Chat-34B 的微调流程&#xff0c;登顶 Ope…

基于深度学习的图像背景去除系统

项目介绍 该项目的主要目标是开发一种高效、准确且适用于高分辨率的抠图系统&#xff0c;能够在自然场景中精确定位并分割出图像中的人、动物、建筑等一系列目标物体。 技术介绍 本项目使用的是基于python的pytorch神经网络框架&#xff0c;使用的神经网络是基于Resnet-50的…

[mysql]多表查询详解

我们如果要查询,我们就要用 SELECT .... FROM .... WHERE AND/OR/NOT #我们需要用过滤的条件来对数据进行筛选,不然会有很多多余数据 ORDER BY (ASC/DESC)#排序 LIMIT....,#是在几个有限的数据库管理系统里所以,PGsql,mysql,等 多表查询的意义 我们目前为止的查询语句…

Docker理念

1.为什么会出现Docker Docker 的出现并非偶然&#xff0c;而是由一系列技术发展趋势和实际需求所推动的一项技术创新。 随着软件行业的快速发展&#xff0c;开发团队的规模不断扩大&#xff0c;成员可能分布在不同的地理位置&#xff0c;使用不同的操作系统和开发工具。这就导致…