前进之路 发表于 2024-7-17 15:48:31

Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

前情提要

在之前实验使用Diffusers库来举行stable-diffusion的接口调用以及各种插件功能实现,但发现diffusers库中各复杂功能的添加较为麻烦,而且难以实现对采样器的添加,safetensors格式模子的读取。在官网上找到了webui有专门的api接口,可以或许极大方便我们举行类似webui界面的api调用。
https://img-blog.csdnimg.cn/direct/5190da12633d4d61a46bbfef4e63341a.png
https://img-blog.csdnimg.cn/direct/7b0da094b22a4d61a4347ae151c75bda.png
diffusers文档
webui项目官网
webui API阐明
webui项目部署

这种调用webui自带的api的方法必要先将webui运行起来,无论是自己从官网配置的webui,还是各类启动器一键启动的都是可以的。(我使用的为一键启动包,较为简单)
一键启动包教程
如果是自己配置的
使用
bash webui.sh --nowebui 大概
python launch.py --xformers --api API接口调用

当我们把webui项目启动之后,我们可以看到运行的端口(默以为7860)
可以举行调用
1. 文生图(python示例):
import json
import requests
import io
import base64
from PIL import Image

url = "http://127.0.0.1:7860"

prompt = "dog"
negative_prompt = ""

payload = {

    # 模型设置
    "override_settings":{
          "sd_model_checkpoint": "v1-5-pruned.ckpt",
          "sd_vae": "animevae.pt",
          "CLIP_stop_at_last_layers": 2,
    },

    # 基本参数
    "prompt": prompt,
    "negative_prompt": negative_prompt,
    "steps": 30,
    "sampler_name": "Euler a",
    "width": 512,
    "height": 512,
    "batch_size": 1,
    "n_iter": 1,
    "seed": 1,
    "CLIP_stop_at_last_layers": 2,

    # 面部修复 face fix
    "restore_faces": False,

    #高清修复 highres fix
    # "enable_hr": True,
    # "denoising_strength": 0.4,
    # "hr_scale": 2,
    # "hr_upscaler": "Latent",

}

response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)
r = response.json()
image = Image.open(io.BytesIO(base64.b64decode(r['images'])))

image.show()
image.save('output.png') 2. 图生图(python 示例)
import json
import requests
import io
import base64
from PIL import Image
import cv2

url = "http://127.0.0.1:7860"

prompt = "cat"
negative_prompt = ""

# 此处为读取一张图片作为输入图像
img = cv2.imread('image.jpg')

# 编码图像
retval, bytes = cv2.imencode('.png', img)
encoded_image = base64.b64encode(bytes).decode('utf-8')

payload = {

#   # 模型设置
#   "override_settings":{
#         "sd_model_checkpoint": "v1-5-pruned.ckpt",
#         "sd_vae": "animevae.pt",
#         "CLIP_stop_at_last_layers": 2,
#   },

    # 基本参数
    "prompt": prompt,
    "negative_prompt": negative_prompt,
    "steps": 30,
    "sampler_name": "Euler a",
    "width": 512,
    "height": 512,
    "batch_size": 1,
    "n_iter": 1,
    "seed": 1,
    "cfg_scale": 7,
    "CLIP_stop_at_last_layers": 2,
   
    "init_images": ,

    # 面部修复 face fix
    "restore_faces": False,

    #高清修复 highres fix
    # "enable_hr": True,
    # "denoising_strength": 0.4,
    # "hr_scale": 2,
    # "hr_upscaler": "Latent",

}



response = requests.post(url=f'{url}/sdapi/v1/img2img', json=payload)
r = response.json()
image = Image.open(io.BytesIO(base64.b64decode(r['images'])))

image.show()
image.save('output.png') 如要修改其他参数可参照官网文档举行修改。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)