一.开启API接口
首先我们把模型部署在自己的服务器上之后开启模型的接口(linux环境下)
进入模型文件 输入命令行:bash webui.sh --listen --api
实现api接口的开启,我们获得一个api接口的地址
二.API接口调用并数据返回给前端
@app.route("/index", methods=["GET", "POST"])
def index():
# 如果是 GET 请求,直接渲染 index.html 页面
if request.method == "GET":
# 判断 session 中是否存在 user_name
if "user_name" not in session:
# 如果不存在,跳转到登录页面
return redirect(url_for("login"))
return render_template("index.html")
# 如果是 POST 请求,获取表单数据
if request.method == "POST":
# 获取表单数据
form_data = request.json
prompt = form_data.get("prompt")
negative_prompt = form_data.get("negative_prompt")
sampler_index = form_data.get("sampler_index")
steps = form_data.get("steps")
width = form_data.get("width")
height = form_data.get("height")
cfg_scale = form_data.get("cfg_scale")
batch_size = form_data.get("batch_size")
seed = form_data.get("seed")
# 组合表单数据为 JSON 格式
data = {
"prompt": prompt,
"negative_prompt": negative_prompt,
"sampler_index": sampler_index,
"steps": steps,
"width": width,
"height": height,
"cfg_scale": cfg_scale,
"batch_size": batch_size,
"seed": seed,
}
url = "http://150.109.18.212:7860/sdapi/v1/txt2img"
# 发送 POST 请求
response = requests.post(url, json=data)
# 将响应信息转为json格式
response_data = response.json()
# 取出images的值,是一个数组
img_list=response_data['images']
# 获取当前日期
today = time.strftime("%Y-%m-%d", time.localtime())
# 创建目录
dir_path = "./static/" + today
if not os.path.exists(dir_path):
os.makedirs(dir_path)
# 解码并保存图片
path_list = []
for i, img_base64 in enumerate(img_list):
# 解码图片
img_data = base64.b64decode(img_base64)
# 生成文件名
timestamp = int(time.time() * 1000)
file_name = f"{timestamp}_{i}.png"
# 保存图片
with open(os.path.join(dir_path, file_name), "wb") as f:
f.write(img_data)
# 保存图片的相对路径到 path_list 中
path = os.path.join(dir_path, file_name)
path_list.append(path)
# 将 path_list 转换为 JSON 格式并返回给前端
response_data = {"state": 200,"message":"图片生成成功!", "path_list": path_list}
return jsonify(response_data)
静态文件需要保存在static文件夹下面(底层文件规定的路径)
我们后端把表单获取的信息 转化为json格式post请求发送给接口,接口返回的数据用json格式进行储存,后端相应的信息发送给前端。