高质量SD WebUI API模式使用教程大全
Stable Diffusion (SD) 是一个强大的图像生成模型,而其 WebUI 提供了一个易于使用的接口,可以帮助用户通过 API 进行图像生成。在本文中,我们将介绍如何高效地使用 SD WebUI 的 API,包括基本的设置、请求示例,及一些常用功能的实现。
一、环境准备
在使用 SD WebUI API之前,首先需要确保你已经安装并运行了 Stable Diffusion WebUI。如果还没有安装,可以参考以下步骤:
- 安装依赖:确保你有 Python 以及相应的库,比如
flask
和requests
。 - 克隆代码库:从官方 GitHub 仓库克隆 SD WebUI 的代码。
bash
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
- 安装必要的库:
bash
pip install -r requirements.txt
- 运行 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
(生成步骤)、width
和 height
(图像大小)等。你可以像下面这样向 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 的使用!