stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

这篇具有很好参考价值的文章主要介绍了stable diffusion webui 文生图(txt2img)api接口调用(使用C#)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

唠嗑

本次将跟读者讲一下如何通过C#请求sd webui api 【txt2img】接口,如果读者觉得文章有用,请给【点个赞】吧,有问题可以评论区提问。

实战

1.配置api启用参数

启动webui时,需加上【–api】 命令以保证api接口可以被调用。如果需要设置密码,可以通过【–api-auth 账号:密码】和【–gradio-auth 账号:密码】 的方式启用。如下图所示的方式,进行开启即可。
注:这里只设置–api-auth的密码是无效了,login接口,是用于ui页面登录的,原有代码是没有api-auth接口返回token的。(如果说错了,欢迎指正)
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

2.本地运行

访问http://127.0.0.1:7860/docs 可以看到swagger文档,但是有时候,会发现访问不到,且报了超时的错误。
原因是swagger界面有js文件是引用cdn的,如果科学上网就一定可以访问到,不科学上网,则有时可以有时不行!
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

3.代码实战

3.1请求/响应类

创建一个C#项目,这里我用控制台,也可以是webapi、mvc等都可以的。如下,创建两个dto类

/// <summary>
    ///  Txt2Img 文生图 请求实体类
    /// </summary>
    public partial class Text2ImgRequestDto
    {

        /// <summary>
        /// 高度(不适用这个去设置,容易导致图片生成重复的内容,因sd的模型,一般都是基于512去训练的)
        /// </summary>
        public long? height { get; set; } = 512;

        /// <summary>
        /// 宽度(不适用这个去设置,容易导致图片生成重复的内容,因sd的模型,一般都是基于512去训练的)
        /// </summary>
        public long? width { get; set; } = 512;

        /// <summary>
        /// 反向提示词
        /// </summary>
        public string? negative_prompt { get; set; }
        /// <summary>
        /// 正向提示词
        /// </summary>
        public string prompt { get; set; }

        /// <summary>
        /// 面部修复(画人像的时候可以考虑使用)
        /// </summary>
        public bool? restore_faces { get; set; } = false;

        /// <summary>
        /// 总批次数
        /// </summary>  
        public long? n_iter { get; set; } = 1;
        /// <summary>
        /// 单批数量(每次生成的图片数量)
        /// </summary>
        public long? batch_size { get; set; } = 4;
        /// <summary>
        /// Sampler 采样方法,默认Euler
        /// </summary>
        public string sampler_index { get; set; } = "Euler a";
        /// <summary>
        /// 随机种子数,默认为-1
        /// </summary>
        public long? seed { get; set; } = -1;
        /// <summary>
        /// 生成步数,默认20
        /// </summary>
        public long? steps { get; set; } = 20;

        
        /// <summary>
        /// 平铺
        /// </summary>
        public bool? tiling { get; set; } = false;

        /// <summary>
        /// 设置模型(不设置会自动有默认的模型)
        /// </summary>
        //public Dictionary<string, object> override_settings { get; set; }  = new Dictionary<string, object>() { { "sd_model_checkpoint", "deliberate_v2.ckpt" } };

        / <summary>
        / Hr Resize X
        / </summary>
        //public long? hr_resize_x { get; set; }

        / <summary>
        / Hr Resize Y
        / </summary>
        //public long? hr_resize_y { get; set; }

        / <summary>
        / 放大倍数
        / </summary>
        //public string hr_upscaler { get; set; }


        /// <summary>
        /// 关键词相关性
        /// </summary>
        public double? cfg_scale { get; set; } = 7;



    }
/// <summary>
    /// 文生图 响应体类
    /// </summary>
    public class Text2ImgResponseDto
    {
        /// <summary>
        /// 生成的图片数组
        /// </summary>
        public List<string> images = new List<string>();

        /// <summary>
        /// request请求中的body
        /// </summary>
        public Text2ImgRequestDto parameters = new Text2ImgRequestDto();

        /// <summary>
        /// 返回的图片数组生成参数信息
        /// </summary>
        public string? info { get; set; }
    }

3.2请求sd api接口

1、在控制台程序中,需要安装【RestSharp】和【Newtonsoft.Json】nuget包,一个用于做api请求,另一个用于json的序列化。
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)
2、添加以下代码到你的项目中,直接运行即可,请求的是本地运行的接口,如下的【http://127.0.0.1:7860/sdapi/v1/txt2img】,需要替换为读者自己的路径。
3、设置请求头:如果读者本地设置了api接口访问需要登录,则需要在header中添加【Authorization】,并设置token。
4、设置请求体:需要创建一个【Text2ImgRequestDto】对象,并且【prompt(提示词)】属性值需要进行赋值,以保证sd接口的正常调用。

using ConsoleApp1;
using Newtonsoft.Json;
using RestSharp;
using System.Threading.Channels;

//使用restclient进行请求
var client = new RestClient("http://127.0.0.1:7860/sdapi/v1/txt2img");
var request = new RestRequest();

//添加i请求头
request.AddHeader("Content-Type", "application/json");
//request.AddHeader("Authorization", "Basic xxxxxx");  //如果启动时加了--api-auth,则需要加上token,否则会返回
request.AddHeader("Accept", "*/*");
request.AddHeader("Connection", "keep-alive");

//构造请求体内容,param中的参数,可以看【Text2ImgRequestDto】中的解析
var param = new Text2ImgRequestDto();
param.prompt = "a hat cat";//提示词
request.AddParameter("application/json", param, ParameterType.RequestBody);
RestResponse response = client.Post(request);
var result = JsonConvert.DeserializeObject<Text2ImgResponseDto>(response.Content);
Console.WriteLine("执行完!");

5、执行请求:执行RestClient的Post方法进行请求。
6、json序列化:使用【Newtonsoft.Json】的【JsonConvert.DeserializeObject】将请求结果转为实体类,如下图:
(1)images:是接口返回给我们的base64图片数组,因【Text2ImgRequestDto】设置了默认生成【4张图】,所以这里的数组长度为【4】。
(2)parameters:request请求中的body。
(3)info:返回的图片数组生成参数信息
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

3.4效果图

复制images数组其中一张图片的base64值,在网上找一个base64转图片的在线工具,粘贴后,可以看到生成的图片如下,这表示我们成功通过接口请求了sd webui api接口。
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

Request failed with status code Unauthorized

如果调用接口时,报了“Request failed with status code Unauthorized”错误,这个时候,需要看看是不是加了"–api-auth"参数?如果是的话,则需要请求token后,加到请求token中才可以。可以参考我的这篇文章的方式去请求token。
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)
如果还是会报权限的异常,可以用以下的方式,传递账密进行调用
stable diffusion webui 文生图(txt2img)api接口调用(使用C#)文章来源地址https://www.toymoban.com/news/detail-488500.html

到了这里,关于stable diffusion webui 文生图(txt2img)api接口调用(使用C#)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图文教程:stable-diffusion的基本使用教程 txt2img(多图)

    之前我介绍了SD的安装过程,那么这篇将介绍怎么使用SD SD安装好之后,我们只有一个默认的模型。这个模型很难满足我们的绘图需求,那么有2种方法。 1是自己训练一个模型(有门槛)2是去网站上找一个别人练好的模型。 很显然的,我需要选择第二种方法。 那么现在最主流

    2024年02月03日
    浏览(27)
  • win10部署NovelAI绘画,Stable Diffusion,Chilloutmix,实现txt2img,img2img(含调参)

    1、Stable Diffusion是什么 Stable Diffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如内补绘制、外补绘制,以及在提示词​(英语)指导下产生图生图的翻译。 Stable Diffusion是由德国慕尼黑大学机器视觉

    2024年01月18日
    浏览(26)
  • [linux-sd-webui]之txt2img

    从webui中抽离出txt2img的接口: 1.参数 photo of woman, dress, city night background  photo of woman, dress, city night background, bracelet  seed 1 seed 3 1.代码流程 main.py modules/txt2img.py   

    2024年02月17日
    浏览(27)
  • Stable diffusion WebUI img2img使用教学

    图生图 (img2img) 相较于文生图 (txt2img),因存在参考图片的基础上创作,其可控性自然更强。下面从图生图的几个应用方向出发,详述其功能特性。 顾名思义,就是通过图片反推,不过作为附加功能首次使用时,需在线下载相应的模型包。有可能退出来的描述信息并不是

    2024年02月16日
    浏览(25)
  • Stable Diffusion WebUI 图生图(img2img):图生图/涂鸦绘制/局部重绘/有色蒙版/上传蒙版/批量处理/反推提示词

    本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本篇文章我们介绍 Stable Diffusion WebUI 的图生图功能,主要包括:图生图、图生图(手绘修正)/涂鸦绘制、局部重绘、局部重绘(有色蒙版)、局部重绘(上传

    2024年04月10日
    浏览(32)
  • 使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像

    在无聊的时候,想瞅一下sd生图遂做了一下 注意:我采用了异步处理,每点击一次发送一次请求,不需要等待生成完再点击。后面生成的画面会覆盖掉之前的。 1、启动SD的api设置 注意,运行后的api相关功能可以在:http://127.0.0.1:7860/docs 查看 比如这一次我们要的生图的地址就是

    2024年04月23日
    浏览(39)
  • Stable Diffusion高级教程 - 图生图(img2img)模式

    前言 现在终于可以介绍 Stable Diffusion 除了文生图 (txt2img) 之外最重要的功能:图生图 (img2img)。顾名思义,除了根据正向和反向提示词之外,还需要基于一张图片生成图。这个模式下功能很多我们挨个说 img2img 图生图模式下的默认功能,我们先看一下主界面: 上面还是正面提示

    2024年04月26日
    浏览(33)
  • Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

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

    2024年01月17日
    浏览(43)
  • Diffusion扩散模型学习3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例

    用了很久的Stable Diffusion,但从来没有好好解析过它内部的结构,写个博客记录一下,嘿嘿。 https://github.com/bubbliiiing/stable-diffusion 喜欢的可以点个star噢。 Stable Diffusion是比较新的一个扩散模型,翻译过来是稳定扩散,虽然名字叫稳定扩散,但实际上换个seed生成的结果就完全不

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包