▷ 启动接口
- 想要在各种其他服务中对接
Stable Diffusion
的绘画功能,需要开启 Stable Diffusion
的 api
功能 - 开发接口需要有一定的技术功底才可以,非技术人员其实不用学习
- 直接在
webui-user.bat
文件中的 set COMMANDLINE_ARGS
参数后添加 --api
即可 - 如果用的是启动器,可以打开其中的启用
API
选项
▷ 接口文档
- 当开启
api
功能后,可以通过访问 http://127.0.0.1:7860/docs
查看 Stable Diffusion
支持的接口列表 - 其中最常用的就是
txt2img
和 img2img
接口功能,也就是实现文生图和图生图的功能 - 点开接口标签,可以看到其中的请求参数和正确错误的返回示例
▷ 接口开发
- 这里以
python
程序进行示范,实现一下 文生图
的接口,其它的接口照葫芦画瓢就行了 - 当然需要安装
python
环境后才可以进行运行,这里新建一个 txt2img.py
文件,写入下面的代码 - 运行该代码需要安装
requests
和 Pillow
- 最后直接运行
python txt2img.py
执行即可
import requests, json, io, base64
from PIL import Image, PngImagePluginresponse = requests.post(url='http://127.0.0.1:7860/sdapi/v1/txt2img',json={'prompt': 'best quality, masterpiece, 1girl, upper body, looking at viewer','negative_prompt': 'easynegative, badhandv4, nsfw','steps': 30,'width': 768,'height': 1024,'sampler_name': 'DPM++ 2M Karras','restore_faces': True}
)r = response.json()for i in r['images']:image = Image.open(io.BytesIO(base64.b64decode(i.split(',', 1)[0])))rsp = requests.post(url='http://127.0.0.1:7860/sdapi/v1/png-info',json={'image': 'data:image/png;base64,' + i})PI = PngImagePlugin.PngInfo()PI.add_text('parameters', rsp.json().get('info'))image.save('result.png', pnginfo=PI)
▷ 代码解释
- 可以看到在请求
/sdapi/v1/txt2img
接口的时候,携带的参数里面有 正向提示词 prompt
、反向提示词 negative_prompt
、迭代步数 steps
、采样方式 sampler_name
、是否开启面部修复 restore_faces
等 - 这些参数都可以抽离出来当作变量传入,会跟加的灵活
- 在请求
/sdapi/v1/txt2img
后可以获得图片的 base64
信息,如果仅仅用作展示,直接将其放置到前端中的 img
标签中即可 - 后面的
/sdapi/v1/png-info
是获取图片的参数信息的,将这些参数写到图片中,在 Stable Diffusion
中处理的时候,它才能识别出你用的参数是哪些,包括但是不限于 正反向提示词
、迭代步数
、采样方式
等等