本文主要是介绍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: --apiRunning 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, PngImagePluginimport 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
文件
这篇关于stable-diffusion-webui 部署 ,启用 api 服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!