您现在的位置是:首页 > 技术教程 正文

Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

admin 阅读: 2024-03-27
后台-插件-广告管理-内容页头部广告(手机)

前情提要

在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现,但发现diffusers库中各复杂功能的添加较为麻烦,而且难以实现对采样器的添加,safetensors格式模型的读取。在官网上找到了webui有专门的api接口,能够极大方便我们进行类似webui界面的api调用。

webui实例图

diffusers文档

webui项目官网

webui API说明

webui项目部署

这种调用webui自带的api的方法需要先将webui运行起来,无论是自己从官网配置的webui,还是各类启动器一键启动的都是可以的。(我使用的为一键启动包,较为简单)

一键启动包教程

如果是自己配置的

使用

bash webui.sh --nowebui

或者

python launch.py --xformers --api

API接口调用

当我们把webui项目启动之后,我们可以看到运行的端口(默认为7860)

可以进行调用

1. 文生图(python示例):

  1. import json
  2. import requests
  3. import io
  4. import base64
  5. from PIL import Image
  6. url = "http://127.0.0.1:7860"
  7. prompt = "dog"
  8. negative_prompt = ""
  9. payload = {
  10. # 模型设置
  11. "override_settings":{
  12. "sd_model_checkpoint": "v1-5-pruned.ckpt",
  13. "sd_vae": "animevae.pt",
  14. "CLIP_stop_at_last_layers": 2,
  15. },
  16. # 基本参数
  17. "prompt": prompt,
  18. "negative_prompt": negative_prompt,
  19. "steps": 30,
  20. "sampler_name": "Euler a",
  21. "width": 512,
  22. "height": 512,
  23. "batch_size": 1,
  24. "n_iter": 1,
  25. "seed": 1,
  26. "CLIP_stop_at_last_layers": 2,
  27. # 面部修复 face fix
  28. "restore_faces": False,
  29. #高清修复 highres fix
  30. # "enable_hr": True,
  31. # "denoising_strength": 0.4,
  32. # "hr_scale": 2,
  33. # "hr_upscaler": "Latent",
  34. }
  35. response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)
  36. r = response.json()
  37. image = Image.open(io.BytesIO(base64.b64decode(r['images'][0])))
  38. image.show()
  39. image.save('output.png')

2. 图生图(python 示例)

  1. import json
  2. import requests
  3. import io
  4. import base64
  5. from PIL import Image
  6. import cv2
  7. url = "http://127.0.0.1:7860"
  8. prompt = "cat"
  9. negative_prompt = ""
  10. # 此处为读取一张图片作为输入图像
  11. img = cv2.imread('image.jpg')
  12. # 编码图像
  13. retval, bytes = cv2.imencode('.png', img)
  14. encoded_image = base64.b64encode(bytes).decode('utf-8')
  15. payload = {
  16. # # 模型设置
  17. # "override_settings":{
  18. # "sd_model_checkpoint": "v1-5-pruned.ckpt",
  19. # "sd_vae": "animevae.pt",
  20. # "CLIP_stop_at_last_layers": 2,
  21. # },
  22. # 基本参数
  23. "prompt": prompt,
  24. "negative_prompt": negative_prompt,
  25. "steps": 30,
  26. "sampler_name": "Euler a",
  27. "width": 512,
  28. "height": 512,
  29. "batch_size": 1,
  30. "n_iter": 1,
  31. "seed": 1,
  32. "cfg_scale": 7,
  33. "CLIP_stop_at_last_layers": 2,
  34. "init_images": [encoded_image],
  35. # 面部修复 face fix
  36. "restore_faces": False,
  37. #高清修复 highres fix
  38. # "enable_hr": True,
  39. # "denoising_strength": 0.4,
  40. # "hr_scale": 2,
  41. # "hr_upscaler": "Latent",
  42. }
  43. response = requests.post(url=f'{url}/sdapi/v1/img2img', json=payload)
  44. r = response.json()
  45. image = Image.open(io.BytesIO(base64.b64decode(r['images'][0])))
  46. image.show()
  47. image.save('output.png')

如要修改其他参数可参照官网文档进行修改。

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜