当前位置: 首页 > article >正文

stable-diffusion-webui 部署 ,启用 api 服务

stable-diffusion-webui 部署 ,启用 api 服务

api 文档参考 https://profaneservitor.github.io/sdwui-docs/api/

api 源码路径是 stable-diffusion-webui/modules/api/api.py

我系统是 ubuntu22.04
conda 环境torchpgu , python 是 3.11.7

安装 stable-diffusion-webui

原始地址
https://github.com/AUTOMATIC1111/stable-diffusion-webui

国内镜像
https://gitee.com/kejiing/stable-diffusion-webui

  • 1 clone 源码

搭建环境

官方推荐 python3.10 或者 python3.11

我这里是conda 环境 torchpgu ,python3.11.7 ,不是系统默认的 python3 命令

  • 2 所以激活 conda 环境torchGgu
conda activate torchGpu
  • 3 然后修改 webui-user.sh
python_cmd="python3.11"
  • 4 执行安装
    ./webui.sh

安装完成之后,首次运行自动下载模型权重,可以手动下载

启用 api

修改 webui-user.sh :
添加下面信息

# https://profaneservitor.github.io/sdwui-docs/api/
#export COMMANDLINE_ARGS=""
# enable web api for web client
export COMMANDLINE_ARGS=--api

启动 api 服务

 ./webui.sh

输出:

 Launching Web UI with arguments: --api
 Running on local URL:  http://127.0.0.1:7860

看到服务地址是 http://127.0.0.1:7860

代码测试

test.py

import json
import requests
import io
import base64
from PIL import Image, PngImagePlugin

import os
# 获取当前文件的绝对路径
current_file_path = os.path.abspath(__file__)
print("Current file path:", current_file_path)
current_directory = os.path.dirname(current_file_path)
print("Current directory:", current_directory)

out_dir =  os.path.join(current_directory, 'api_out')  
out_dir_t2i = os.path.join(out_dir, 'txt2img')
out_dir_i2i = os.path.join(out_dir, 'img2img')
os.makedirs(out_dir_t2i, exist_ok=True)
os.makedirs(out_dir_i2i, exist_ok=True)

url = "http://127.0.0.1:7860"

payload = {
    "prompt": "puppy dog",
    "steps": 5
}

response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)

r = response.json()

for i in r['images']:
    image = Image.open(io.BytesIO(base64.b64decode(i.split(",",1)[0])))

    png_payload = {
        "image": "data:image/png;base64," + i
    }
    response2 = requests.post(url=f'{url}/sdapi/v1/png-info', json=png_payload)

    pnginfo = PngImagePlugin.PngInfo()
    pnginfo.add_text("parameters", response2.json().get("info"))
    img_path = os.path.join(out_dir_t2i,'output.png')
    image.save(img_path, pnginfo=pnginfo)

运行之后输出 api_out/txt2img/output.png 文件

在这里插入图片描述


http://www.kler.cn/a/281698.html

相关文章:

  • 【读书笔记-《网络是怎样连接的》- 7】Chapter3_2 路由器
  • ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?
  • 生数科技发布 Vidu 1.5 新版本,引领视频大模型新潮流
  • HarmonyOS Next 关于页面渲染的性能优化方案
  • NIST 发布后量子密码学转型战略草案
  • AI模型新发现:精度的重要性超出预期
  • TPM管理培训究竟需要多少天?完整攻略在此
  • 光伏设计中组串逆变和微型逆变是什么意思?有什么区别?
  • 433 国乒启发式:一切方法的尽头都是本能反应
  • 提升广告效果:Facebook广告投放步骤与实用工具解析
  • GraphRAG论文阅读笔记
  • 构建开发全能型档期预约系统
  • spring整合redis(常用数据类型操作)
  • java 实现文本转音频
  • 线性代数 第三讲 线性相关无关 线性表示
  • vue之递归组件
  • 单例模式在实现webserver这个项目中起到了什么作用
  • 回调函数基本实现
  • 什么是跨域问题?出现的原因和解决方法是什么?
  • 自动化常用元素定位
  • pymysql 与 MySQL数据库交互
  • 程序员的自我修炼:如何拒绝快餐式学习,深耕技能20240829
  • windows消息机制之HMIsMarkDestroy宏定义的理解
  • c语言——数组
  • 基于my Batis优化图书管理系统(一)
  • FastAdmin 和 Dcat Admin从使用场景、适合人群、使用成本、资源完善程度、bug 解决、安全性全方位解析