为Stable Diffusion web UI开发自己的插件实战

最近,Stable Diffusion AI绘画受到了广泛的关注和热捧。它的Web UI提供了了一系列强大的功能,其中特别值得一提的是对插件的支持,尤其是Controlnet插件的加持,让它的受欢迎程度不断攀升。那么,如果你有出色的创意,如何将其融入Stable Diffusion Web UI中呢?不用担心,我们可以开发相关的插件来实现这个目标。实际上,开发Stable Diffusion Web UI并不困难,因为Web UI框架本身就支持插件开发。Stable Diffusion的大部分代码是用Python编写的,其Web UI采用了Gradio框架。相信大家对这两个概念已经非常熟悉,因此在这里不再过多阐述。下面,我将与大家分享我的一个小测试!

首先我们来到Stable Diffusion 的modeules目录找到scripts.py文件,目录如下

打开scripts.py可以查看其中的代码。这个文件包含了常用的UI方法,我们可以在开发过程中引用这些方法来对UI进行重载。这里我就不一一阐述每个方法的作用了,相信大家根据每个方法的字面意思也可以理解方法的作用了吧。

新建项目,目录结构如下,目录结构中一定要有scripts目录,这里面也是存放我们开发插件文件的地方。其他的可以根据自己的习惯存放。

下面是一个reminderPlugn.py的源码,

import contextlib

import gradio as gr
from modules import scripts

def send_text_to_prompt(new_text,old_text):
   
    if old_text =="":
         return new_text
    
    print(old_text+","+new_text)
    return old_text+","+new_text


class reminderPlugin(scripts.Script):
    def __init__(self) -> None:
        super().__init__()

    def title(self):
        return "test-project"

    def show(self,is_img2img):
        return scripts.AlwaysVisible

    def ui(self,is_img2img):
        with gr.Group():
            with gr.Accordion("测试插件",open=False):
                send_text_button = gr.Button(value="发送文本",variant='primary')
                text_to_be_sent = gr.Textbox(label="文本内容")
                types_to_sent = gr.Dropdown(["cat", "dog", "bird"], label="Animal", info="Will add more animals later!")

        with contextlib.suppress(AttributeError):
            if is_img2img:
                #根据当前的Tab来设置点击后数据输出的组件
                send_text_button.click(fn=send_text_to_prompt,inputs=[text_to_be_sent,send_text_button])
            else:
                #根据当前的Tab来设置点击后数据输出的组件
                send_text_button.click(fn=send_text_to_prompt,inputs=[text_to_be_sent,send_text_button])
        return [text_to_be_sent,send_text_button,types_to_sent]


def after_component(self,component,**kwargs):
    if kwargs.get("elem_id")=="txt2img_prompt":
        self.boxx = component
    if kwargs.get("elem_id")=="img2img_prompt":
        self.boxxIMG = component

完成上面的代码后,我们将项目文件拷贝到Stable Diffusion 的extensions目录中

 再重启Stable Diffusion web UI,在参数调试下面我们就可以看到测试插件显示了。

 至些,插件就完成了,上面的代码只是展示了web UI显示功能,功能还未完善,大家可以根据自己的需求完成不同的功能,这里只是起到抛砖引玉的作用! 

如果文章对你有用,别忘记一键三连,感谢关注我,你的关注就是我持续输出的动力!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Stable Diffusion WebUI是一种用于管理CodePlex常见操作的网络用户界面(WebUI),这意味着您不需要登录到服务器上的命令行界面来管理项目。安装过程并不复杂,但需要一些基本的技术知识。下面是安装过程的一些步骤: 首先,确保您的服务器已安装一个数据库管理系统。Stable Diffusion WebUI支持MSSQL Server、MySQL和SQLite等数据库系统,您可以根据自己的需要选择。然后,您需要在服务器上安装.NET框架,因为Stable Diffusion WebUI是一个基于.NET开发的应用程序。您可以在微软官网上下载适合您的版本。 接下来,您需要下载最新版本的Stable Diffusion WebUI。您可以从官方网站或GitHub页面上找到下载链接。将安装包下载到服务器上的任何目录中,然后解压缩它。安装包中包含了一些必要的文件和文件夹,包括安装向导(Install.bat)、WebUI配置文件(StableDiffusion.config)和WebUI启动程序(WebUI.exe)。 在使用安装向导之前,您需要进一步配置您的数据库。因此,您需要使用数据库管理系统(如MSSQL Server Management Studio)创建一个新的Database,并确保您对其具有足够的权限。然后,将您的数据库连接字符串添加到StableDiffusion.config文件中,并更改一些其他设置,例如端口号和SSL证书等。您还需要指定用于启动WebUi的帐户和密码。 一旦您完成了这些准备工作,就可以启动安装向导了。双击Install.bat脚本文件,它会自动安装Stable Diffusion WebUI,并将相关的文件复制到服务器上的指定目录中。安装程序还可以安装.NET框架和其他必要的组件(如IIS和ASP.NET)。 最后,您可以尝试连接到WebUI界面并登录到您的CodePlex项目。在您经过手动或自动设置后,您可以使用Stable Diffusion WebUI的各种功能来管理代码版本控制、问题跟踪、建立代码合并请求等等。它非常方便、强大,是一个非常受欢迎的开源项目管理工具。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷子熟了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值