Stable Diffusion WebUI是一种基于深度学习的图像生成工具,它能够通过提供文本描述生成相应的图像。此外,Stable Diffusion还支持图像生成,即根据已有图像生成新的图像。这篇文章将介绍如何调用Stable Diffusion WebUI的API,包括文本生成图像和图像生成图像的实例。

搭建环境

在使用Stable Diffusion WebUI之前,首先需要搭建好相关的环境。可以通过以下步骤来创建并运行WebUI:

  1. 克隆仓库bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui

  2. 安装依赖项: 使用Python虚拟环境并安装依赖项: bash python -m venv venv source venv/bin/activate # 对于Windows系统,使用 .\venv\Scripts\activate pip install -r requirements.txt

  3. 启动WebUIbash 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调用有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部