Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)
admin 阅读: 2024-03-27
后台-插件-广告管理-内容页头部广告(手机) |
前情提要
在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现,但发现diffusers库中各复杂功能的添加较为麻烦,而且难以实现对采样器的添加,safetensors格式模型的读取。在官网上找到了webui有专门的api接口,能够极大方便我们进行类似webui界面的api调用。
diffusers文档
webui项目官网
webui API说明
webui项目部署
这种调用webui自带的api的方法需要先将webui运行起来,无论是自己从官网配置的webui,还是各类启动器一键启动的都是可以的。(我使用的为一键启动包,较为简单)
一键启动包教程
如果是自己配置的
使用
bash webui.sh --nowebui或者
python launch.py --xformers --apiAPI接口调用
当我们把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'][0])))
- 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": [encoded_image],
- # 面部修复 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'][0])))
- image.show()
- image.save('output.png')
如要修改其他参数可参照官网文档进行修改。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |