高质量SD WebUI API模式使用教程大全

Stable Diffusion (SD) 是一个强大的图像生成模型,而其 WebUI 提供了一个易于使用的接口,可以帮助用户通过 API 进行图像生成。在本文中,我们将介绍如何高效地使用 SD WebUI 的 API,包括基本的设置、请求示例,及一些常用功能的实现。

一、环境准备

在使用 SD WebUI API之前,首先需要确保你已经安装并运行了 Stable Diffusion WebUI。如果还没有安装,可以参考以下步骤:

  1. 安装依赖:确保你有 Python 以及相应的库,比如 flaskrequests
  2. 克隆代码库:从官方 GitHub 仓库克隆 SD WebUI 的代码。

bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui

  1. 安装必要的库

bash pip install -r requirements.txt

  1. 运行 WebUI

bash python app.py

运行后,默认浏览器会自动打开 WebUI 界面,通常地址为 http://127.0.0.1:5000/

二、API 访问

1. 基本的 API 请求

API的一般调用都是针对本地服务器的。在终端或者 Postman 中,你可以用以下简单的 CURL 命令来生成图像:

curl -X POST http://127.0.0.1:5000/sdapi/v1/txt2img -H "Content-Type: application/json" -d '{
  "prompt": "A fantasy landscape, trending on artstation",
  "negative_prompt": "bad quality, blurry"
}'

这里的 prompt 是你想要生成的图像描述,而 negative_prompt 是相关的消极描述,用于排除不希望出现的元素。

2. 接收响应

上述请求的响应将返回 JSON 格式的数据,其中包含生成的图像地址。通常我们可以得到如下的响应结构:

{
  "images": ["data:image/png;base64,..."],
  "parameters": {
    "prompt": "A fantasy landscape, trending on artstation",
    ...
  }
}

你可以通过解析这个 JSON 来获取生成的图像。

3. 下载生成的图像

接下来,如果你希望将生成的图像保存到本地,可以使用以下 Python 代码:

import base64
import requests

response = requests.post(
    'http://127.0.0.1:5000/sdapi/v1/txt2img',
    json={
        "prompt": "A fantasy landscape, trending on artstation"
    }
)

data = response.json()
image_data = data['images'][0].split(',')[1]  # 获取base64数据
with open("output.png", "wb") as fh:
    fh.write(base64.b64decode(image_data))

三、进阶使用

1. 自定义参数

除了基本的 prompt 输入之外,SD WebUI API 还支持多种自定义参数,比如 steps(生成步骤)、widthheight(图像大小)等。你可以像下面这样向 API 发送请求:

curl -X POST http://127.0.0.1:5000/sdapi/v1/txt2img -H "Content-Type: application/json" -d '{
  "prompt": "A fantasy landscape, trending on artstation",
  "steps": 50,
  "width": 512,
  "height": 512
}'

2. 批量生成图像

如果你想批量生成图像,可以使用一个循环遍历多个 prompt 值,并依次调用 API。例如,以下示例展示了如何批量生成图像:

prompts = ["A serene lake at sunset", "A bustling city street", "A mystical forest"]
for prompt in prompts:
    response = requests.post(
        'http://127.0.0.1:5000/sdapi/v1/txt2img',
        json={"prompt": prompt}
    )
    data = response.json()
    image_data = data['images'][0].split(',')[1]
    filename = f"{prompt.replace(' ', '_')}.png"
    with open(filename, "wb") as fh:
        fh.write(base64.b64decode(image_data))

四、结论

通过以上的介绍,我们了解到如何设置和使用 Stable Diffusion WebUI 的 API。你可以根据自己的需求调整参数,生成高质量的图像。无论是单幅图像还是批量生成,SD WebUI API 都能满足你的需求。希望这篇教程能帮助你更好地掌握 SD WebUI 的使用!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部