〔025〕Stable Diffusion 之 接口开发 篇

news/2025/2/5 2:26:49/

✨ 目录

    • ▷ 启动接口
    • ▷ 接口文档
    • ▷ 接口开发
    • ▷ 代码解释

▷ 启动接口

  • 想要在各种其他服务中对接 Stable Diffusion 的绘画功能,需要开启 Stable Diffusionapi 功能
  • 开发接口需要有一定的技术功底才可以,非技术人员其实不用学习
  • 直接在 webui-user.bat 文件中的 set COMMANDLINE_ARGS 参数后添加 --api 即可
  • 如果用的是启动器,可以打开其中的启用 API 选项

开启接口服务

▷ 接口文档

  • 当开启 api 功能后,可以通过访问 http://127.0.0.1:7860/docs 查看 Stable Diffusion 支持的接口列表
  • 其中最常用的就是 txt2imgimg2img 接口功能,也就是实现文生图和图生图的功能
  • 点开接口标签,可以看到其中的请求参数和正确错误的返回示例

接口文档

▷ 接口开发

  • 这里以 python 程序进行示范,实现一下 文生图 的接口,其它的接口照葫芦画瓢就行了
  • 当然需要安装 python 环境后才可以进行运行,这里新建一个 txt2img.py 文件,写入下面的代码
  • 运行该代码需要安装 requestsPillow
  • 最后直接运行 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 中处理的时候,它才能识别出你用的参数是哪些,包括但是不限于 正反向提示词迭代步数采样方式 等等

接口返图


http://www.ppmy.cn/news/1350382.html

相关文章

【Java程序设计】【C00264】基于Springboot的原创歌曲分享平台(有论文)

基于Springboot的原创歌曲分享平台(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的原创歌曲分享平台 本系统分为平台功能模块、管理员功能模块以及用户功能模块。 平台功能模块:在平台首页可以查看首…

分布式系统架构介绍

1、为什么需要分布式架构? 增大系统容量:单台系统的性能瓶颈,多台机器才能应对大规模的应用场景,所以就需要我们的应用支撑平台具备分布式架构。 加强系统的可用:为了满足业务的SLA要求,需要通过分布式架构…

【LeetCode】37. 解数独(困难)——代码随想录算法训练营Day30

题目链接:37. 解数独 题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&…

C++泛型编程:模板偏特化

模板偏特化为模板提供特殊的实现,针对特定的模板参数或参数组合。 在模板全特化,所有的模板参数都被指定了具体的类型。 我们可以在泛化设计中提供一个特化版本,针对其中某个或者数个模板参数进行特化,我们可以指定一部分模板参…

STM32自学☞定时器定时中断案例

timer_interrupt.c文件 /* 初始化函数编写步骤: 1.打开时钟 2.选择时基单元的时钟源(内部时钟源) 3.配置时基单元 4.NVIC配置 5.启动定时器 */ #include "stm32f10x.h" #include "stm32f10x_tim.h" #include …

​​​​​​C#系列-C#EF框架实现分库分表(21)

在C#中使用Entity Framework (EF)框架实现分库分表(也称为数据库分片或水平切分)是一个相对复杂的过程,因为EF本身并不直接支持分库分表。分库分表通常是为了解决单一数据库的性能瓶颈、数据量过大、高并发等问题而采取的一种策略。 实现分库…

速盾:cdn集群防御空间dns服务器

在当今数字化时代,网络安全和性能成为了企业关注的焦点。速盾的CDN集群防御空间DNS服务器技术为网站提供了更高水平的安全性和性能优化。本文将深入探讨这一技术的关键特点和优势。 1. 集群防御: 速盾的CDN集群防御通过分布在全球的节点集群,…

【Python】单元测试unittest框架

note 使用unittest框架进行单元测试是Python标准库的一部分,提供了编写测试用例、测试套件以及运行测试的能力。测试用例是继承自unittest.TestCase的类。在这个类中,你可以定义一系列的方法来测试不同的行为。每个测试方法都应该以test开头。 文章目录…