介绍:
众所周知,comfyui是一个AI绘图领域的一个十分好用的工具,可以完成很多十分复杂的工作流。工作效率远远高于 传统的webui。同时,入门门槛十分低,在bilibili看一个小时教程即可完全入门。
所以很多工作室将comfyui工作流作为stable diffusion开发的主要工具。
本文即来教大家如何使用comfyui写自己的插件。保证通俗易懂,看完就会。
(当然默认你已经安装了comfyui,并且知道怎么使用。并且了解python简单的语法)
最基本的框架:
首先,在comfyui文件目录下,custom_nodes 文件夹是我们要放置我们的插件的地方。
下面我将演示一下,如何使用代码写一个最简单的插件。 首先,新建一个py文件,命名为example.py
class example_class:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"image": ("IMAGE",),
},
"optional":{
"width":("INT", {"default": 512, "min": 0, "step": 1}),
"type": (
["ImagePrompt", "PyraCanny", "CPDS", "FaceSwap"],
{"default": "ImagePrompt"},)
}
}
CATEGORY = "example_list/example"
RETURN_TYPES = ("IMAGE",)
FUNCTION = "example_func"
def example_func(self, image,width,type):
return (image,)
NODE_CLASS_MAPPINGS = {
"example": example_class,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"example": "displayname",
}
无论写什么节点,都可以先无脑把这套框架搬运过去。下面我将一行行介绍这些代码,当然懂代码的可能看到这里就已经懂了。
input 函数
要写一个节点,首先要声明一个类,class,然后要写的第一个函数就是INPUT_TYPES 这个函数。他要控制我们写的节点中输入是什么。
首先,require里要写必须要连接的节点, 在comfyui中如果不连接就会报错,optional是可选的选项,
如果我们节点 的输入是类型是上一个节点输出的类型,"image": ("IMAGE",),就像这样就可以了。
括号里写输出节点的输出类型就OK了。
如果节点的输入类型是,int数字或者float 数字,那么就像这样。
"width":("INT", {"default": 512, "min": 0, "step": 1}),
default 是默认的数字,min是最小值,max 是最大值,step是comfyui里左右调整时的步长。
如果输入是选择题,就像这样。
"type": (
["ImagePrompt", "PyraCanny", "CPDS", "FaceSwap"],
{"default": "ImagePrompt"},)
其他参数:
CATEGORY 控制这个节点你在comfyui右键后,存放的位置。
RETURN_TYPES :输出的节点的类型
example_func 就是功能函数,要实现的功能都在这里写就行。