Stable Diffusion WebUI是一种基于深度学习的图像生成工具,它能够通过提供文本描述生成相应的图像。此外,Stable Diffusion还支持图像生成,即根据已有图像生成新的图像。这篇文章将介绍如何调用Stable Diffusion WebUI的API,包括文本生成图像和图像生成图像的实例。
搭建环境
在使用Stable Diffusion WebUI之前,首先需要搭建好相关的环境。可以通过以下步骤来创建并运行WebUI:
-
克隆仓库:
bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui
-
安装依赖项: 使用Python虚拟环境并安装依赖项:
bash python -m venv venv source venv/bin/activate # 对于Windows系统,使用 .\venv\Scripts\activate pip install -r requirements.txt
-
启动WebUI:
bash python app.py
这将启动一个本地服务器,通常会在http://127.0.0.1:5000
上运行。
API 调用示例
Stable Diffusion WebUI提供了RESTful API接口,允许用户通过HTTP请求与其进行交互。
文本生成图像(Text-to-Image)
首先,让我们演示如何通过API调用进行文本生成图像。我们可以使用Python的requests
库来发送POST请求。
import requests
import json
# 设置API的URL
url = "http://127.0.0.1:5000/sdapi/v1/txt2img"
# 定义请求的payload
data = {
"prompt": "A fantasy landscape with mountains and a river",
"steps": 20,
"seed": 42,
"width": 512,
"height": 512
}
# 发送请求
response = requests.post(url, json=data)
# 处理响应
if response.status_code == 200:
# 获取生成的图像
results = response.json()
image_data = results['images'][0] # 获取第一张图像
with open("output.png", "wb") as f:
f.write(requests.get(image_data).content) # 下载图像
print("图像已保存为output.png")
else:
print("请求失败:", response.text)
在这个示例中,我们向API发送了文本提示“一个有山和河流的幻想风景”,并指定了图像的宽度和高度。成功后,生成的图像将被保存到本地。
图像生成图像(Image-to-Image)
Stable Diffusion还支持根据已有图像生成新图像,可以通过以下方式调用API:
url = "http://127.0.0.1:5000/sdapi/v1/img2img"
# 读取已有的图像并进行编码
with open("example.png", "rb") as f:
image_data = f.read()
data = {
"init_images": [image_data],
"prompt": "Make it more vibrant and colorful",
"strength": 0.75,
"steps": 20,
"seed": 42
}
# 发送请求
response = requests.post(url, json=data)
# 处理响应
if response.status_code == 200:
results = response.json()
new_image_data = results['images'][0]
with open("img2img_output.png", "wb") as f:
f.write(requests.get(new_image_data).content)
print("生成的新图像已保存为img2img_output.png")
else:
print("请求失败:", response.text)
在这个例子中,我们提供了一张已有图像example.png
,并通过设置提示来对其进行修改。strength
参数控制生成图像与原图的相似度,值越低,生成图像会越接近原图。
总结
通过Stable Diffusion WebUI的API,用户可以方便地生成图像,无论是通过文本提示生成新图像,还是对已有图像进行改造。上述代码示例展示了如何进行有效的API调用,用户可以根据自己的需求进一步修改和扩展这些示例。希望这篇文章对您使用Stable Diffusion WebUI的API调用有所帮助!