Skip to content

Commit

Permalink
代码上传
Browse files Browse the repository at this point in the history
  • Loading branch information
ZHO-ZHO-ZHO authored Sep 9, 2023
1 parent f9884f7 commit 1e1708a
Show file tree
Hide file tree
Showing 8 changed files with 1,229 additions and 0 deletions.
184 changes: 184 additions & 0 deletions Zho_CoInput_new/Zho_Standard__new.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
import torch

from comfy.sd import CLIP, VAE

import comfy.model_patcher

import comfy.sd

import folder_paths

MAX_RESOLUTION=8192
#------------------------------------------------------------------------------
def load_checkpoint(主模型,output_vae=True, output_clip=True):

ckpt_path = folder_paths.get_full_path("checkpoints", 主模型)
out = comfy.sd.load_checkpoint_guess_config(ckpt_path, output_vae=True, output_clip=True,
embedding_directory=folder_paths.get_folder_paths("embeddings"))

model = out[0]
clip = out[1]
vae = out[2]

return model, clip, vae

#------------------------------------------------------------------------------
def load_lora(Lora模型, model, clip, Lora模型强度, Loraclip强度):

lora_path = folder_paths.get_full_path("loras", Lora模型)
model_lora, clip_lora = comfy.sd.load_lora_for_models(model, clip, lora_path, Lora模型强度, Loraclip强度)

return model, clip

#------------------------------------------------------------------------------
# 添加一个辅助函数,用于交换宽度和高度
def swap_width_height(width, height):
return height, width

#------------------------------------------------------------------------------
class 综合输入器_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"Clip跳过层": ("INT", {"default": -1, "min": -24, "max": -1, "step": 1}),
"宽度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"高度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"交换宽高": ("BOOLEAN", {"default": False}), # 添加交换宽度和高度的按钮
"生成数量": ("INT", {"default": 1, "min": 1, "max": 64}),
"正向提示词": ("STRING", {"default": "正向提示词", "multiline": True}),
"负向提示词": ("STRING", {"default": "负向提示词", "multiline": True}),
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
"步数": ("INT", {"default": 20, "min": 1, "max": 10000}),
"CFG": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0}),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
}}

RETURN_TYPES = ("INT", "INT", "INT", "INT", "STRING", "STRING", "INT", "INT", "FLOAT", "FLOAT",)
RETURN_NAMES = ("Clip跳过层", "宽度", "高度", "生成数量", "正向提示词", "负向提示词", "seed", "步数", "CFG", "降噪值", )

FUNCTION = "Zho_co_input"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_input(self, Clip跳过层, 宽度, 高度, 生成数量, 正向提示词, 负向提示词, seed, 步数, CFG, denoise, 交换宽高=False ):
# 如果用户选择交换宽度和高度,则调用交换函数
if 交换宽高:
宽度, 高度 = swap_width_height(宽度, 高度)

return (Clip跳过层, 宽度, 高度, 生成数量, 正向提示词, 负向提示词, seed, 步数, CFG, denoise, )

#------------------------------------------------------------------------------
class 模型加载器_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"主模型": (folder_paths.get_filename_list("checkpoints"), ),
"Clip跳过层": ("INT", {"default": -1, "min": -24, "max": -1, "step": 1}),
"VAE模型": (["自带VAE"] + folder_paths.get_filename_list("vae"), ),
"Lora模型": (["无"] + folder_paths.get_filename_list("loras"), ),
"Lora模型强度": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
"Loraclip强度": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
}}

RETURN_TYPES = ("MODEL", "CLIP", "VAE",)
RETURN_NAMES = ("主模型", "CLIP模型", "VAE模型",)

FUNCTION = "Zho_co_model_loader"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_model_loader(self, 主模型, Clip跳过层, VAE模型, Lora模型, Lora模型强度, Loraclip强度):

model: ModelPatcher | None = None
clip: CLIP | None = None
vae: VAE | None = None

#主模型
model, clip, vae = load_checkpoint(主模型)

#Lora模型
if Lora模型 != "无":
model, clip = load_lora(Lora模型, model, clip, Lora模型强度, Loraclip强度)

#Clip跳过层
clip = clip.clone()
clip.clip_layer(Clip跳过层)

#VAE
if VAE模型 != "自带VAE":
vae_path = folder_paths.get_full_path("vae", VAE模型)
vae = comfy.sd.VAE(ckpt_path=vae_path)

return (model, clip, vae, )

#------------------------------------------------------------------------------
class 参数加载器_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"clip": ("CLIP", ),
"宽度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"高度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"生成数量": ("INT", {"default": 1, "min": 1, "max": 64}),
"正向提示词": ("STRING", {"default": "正向提示词", "multiline": True}),
"负向提示词": ("STRING", {"default": "负向提示词", "multiline": True}),
}}

RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT",)
RETURN_NAMES = ("正向条件", "负向条件", "LATENT",)

FUNCTION = "Zho_co_parameter_loader"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_parameter_loader(self, 正向提示词, 负向提示词, 宽度, 高度, 生成数量, clip):

#潜空间图像
latent = torch.zeros([生成数量, 4, 高度 // 8, 宽度 // 8])

positive_encoded = negative_encoded = None
positive_encoded = CLIPTextEncode().encode(clip, 正向提示词)[0]
negative_encoded = CLIPTextEncode().encode(clip, 负向提示词)[0]

return (positive_encoded, negative_encoded, {"samples":latent}, )

#------------------------------------------------------------------------------
# 添加一个辅助函数,用于交换宽度和高度
def swap_width_height(width, height):
return height, width

# 修改初始潜空间_Zho类
class 初始潜空间_交换_Zho:
def __init__(self, device="cpu"):
self.device = device

@classmethod
def INPUT_TYPES(cls):
return {"required": {
"宽度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"高度": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"批次数": ("INT", {"default": 1, "min": 1, "max": 64}),
"交换宽高": ("BOOLEAN", {"default": False}), # 添加交换宽度和高度的按钮
}}

RETURN_TYPES = ("LATENT",)
RETURN_NAMES = ("潜空间",)
FUNCTION = "generate"

CATEGORY = "Zho模块组/Standard标准组"

def generate(self, 宽度, 高度, 批次数=1, 交换宽高=False):
# 如果用户选择交换宽度和高度,则调用交换函数
if 交换宽高:
宽度, 高度 = swap_width_height(宽度, 高度)

latent = torch.zeros([批次数, 4, 高度 // 8, 宽度 // 8])
return ({"samples": latent}, )

#------------------------------------------------------------------------------
NODE_CLASS_MAPPINGS = {
"综合输入器_Zho": 综合输入器_Zho,
"模型加载器_Zho": 模型加载器_Zho,
"参数加载器_Zho": 参数加载器_Zho,
"初始潜空间_交换_Zho": 初始潜空间_交换_Zho,
}
184 changes: 184 additions & 0 deletions Zho_CoInput_new/Zho_Standard__new_EN.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
import torch

from comfy.sd import CLIP, VAE

import comfy.model_patcher

import comfy.sd

import folder_paths

MAX_RESOLUTION=8192
#------------------------------------------------------------------------------
def load_checkpoint(ckpt_name,output_vae=True, output_clip=True):

ckpt_path = folder_paths.get_full_path("checkpoints", ckpt_name)
out = comfy.sd.load_checkpoint_guess_config(ckpt_path, output_vae=True, output_clip=True,
embedding_directory=folder_paths.get_folder_paths("embeddings"))

model = out[0]
clip = out[1]
vae = out[2]

return model, clip, vae

#------------------------------------------------------------------------------
def load_lora(lora_name, model, clip, strength_model, strength_clip):

lora_path = folder_paths.get_full_path("loras", lora_name)
model_lora, clip_lora = comfy.sd.load_lora_for_models(model, clip, lora_path, strength_model, strength_clip)

return model, clip

#------------------------------------------------------------------------------
# 添加一个辅助函数,用于交换宽度和高度
def swap_width_height(width, height):
return height, width

#------------------------------------------------------------------------------
class Co_Input_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"clip_skip": ("INT", {"default": -1, "min": -24, "max": -1, "step": 1}),
"width": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"height": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"swap": ("BOOLEAN", {"default": False}), # 添加交换宽度和高度的按钮
"batch_size": ("INT", {"default": 1, "min": 1, "max": 64}),
"positive": ("STRING", {"default": "+正向提示词", "multiline": True}),
"negative": ("STRING", {"default": "-负向提示词", "multiline": True}),
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
"steps": ("INT", {"default": 20, "min": 1, "max": 10000}),
"cfg": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0}),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
}}

RETURN_TYPES = ("INT", "INT", "INT", "INT", "STRING", "STRING", "INT", "INT", "FLOAT", "FLOAT",)
RETURN_NAMES = ("clip_skip", "width", "height", "batch_size", "positive", "negative", "seed", "steps", "cfg", "denoise", )

FUNCTION = "Zho_co_input"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_input(self, clip_skip, width, height, batch_size, positive, negative, seed, steps, cfg, denoise, swap=False ):
# 如果用户选择交换宽度和高度,则调用交换函数
if swap:
width, height = swap_width_height(width, height)

return (clip_skip, width, height, batch_size, positive, negative, seed, steps, cfg, denoise, )

#------------------------------------------------------------------------------
class Co_Loader_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), ),
"clip_skip": ("INT", {"default": -1, "min": -24, "max": -1, "step": 1}),
"vae_name": (["Baked VAE"] + folder_paths.get_filename_list("vae"), ),
"lora_name": (["None"] + folder_paths.get_filename_list("loras"), ),
"strength_model": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
"strength_clip": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
}}

RETURN_TYPES = ("MODEL", "CLIP", "VAE",)
RETURN_NAMES = ("Model", "CLIP", "VAE",)

FUNCTION = "Zho_co_model_loader"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_model_loader(self, ckpt_name, clip_skip, vae_name, lora_name, strength_model, strength_clip):

model: ModelPatcher | None = None
clip: CLIP | None = None
vae: VAE | None = None

#主模型
model, clip, vae = load_checkpoint(model)

#Lora模型
if lora_name != "None":
model, clip = load_lora(lora_name, model, clip, strength_model, strength_clip)

#Clip跳过层
clip = clip.clone()
clip.clip_layer(clip_skip)

#VAE
if vae_name != "Baked VAE":
vae_path = folder_paths.get_full_path("vae", vae_name)
vae = comfy.sd.VAE(ckpt_path=vae_path)

return (model, clip, vae, )

#------------------------------------------------------------------------------
class Parameter_Loader_Zho:
@classmethod
def INPUT_TYPES(s):
return {"required": {
"clip": ("CLIP", ),
"width": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"height": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"batch_size": ("INT", {"default": 1, "min": 1, "max": 64}),
"positive": ("STRING", {"default": "Positive", "multiline": True}),
"negative": ("STRING", {"default": "Negative", "multiline": True}),
}}

RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT",)
RETURN_NAMES = ("Positive", "Negative", "LATENT",)

FUNCTION = "Zho_co_parameter_loader"

CATEGORY = "Zho模块组/Standard标准组"

def Zho_co_parameter_loader(self, positive, negative, width, height, batch_size, clip):

#潜空间图像
latent = torch.zeros([batch_size, 4, height // 8, width // 8])

positive_encoded = negative_encoded = None
positive_encoded = CLIPTextEncode().encode(clip, positive)[0]
negative_encoded = CLIPTextEncode().encode(clip, negative)[0]

return (positive_encoded, negative_encoded, {"samples":latent}, )

#------------------------------------------------------------------------------
# 添加一个辅助函数,用于交换宽度和高度
def swap_width_height(width, height):
return height, width

# 修改初始潜空间_Zho类
class EmptyLatent_Swap_Zho:
def __init__(self, device="cpu"):
self.device = device

@classmethod
def INPUT_TYPES(cls):
return {"required": {
"width": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"height": ("INT", {"default": 512, "min": 64, "max": MAX_RESOLUTION, "step": 8}),
"batch_size": ("INT", {"default": 1, "min": 1, "max": 64}),
"swap": ("BOOLEAN", {"default": False}), # 添加交换宽度和高度的按钮
}}

RETURN_TYPES = ("LATENT",)
RETURN_NAMES = ("LATENT",)
FUNCTION = "generate"

CATEGORY = "Zho模块组/Standard标准组"

def generate(self, width, height, batch_size=1, swap=False):
# 如果用户选择交换宽度和高度,则调用交换函数
if swap:
width, height = swap_width_height(width, height)

latent = torch.zeros([batch_size, 4, height // 8, width // 8])
return ({"samples": latent}, )

#------------------------------------------------------------------------------
NODE_CLASS_MAPPINGS = {
"Co_Input_Zho": Co_Input_Zho,
"Co_Loader_Zho": Co_Loader_Zho,
"Parameter_Loader_Zho": Parameter_Loader_Zho,
"EmptyLatent_Swap_Zho": EmptyLatent_Swap_Zho,
}
7 changes: 7 additions & 0 deletions Zho_CoInput_new/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from .Zho_Standard_new import NODE_CLASS_MAPPINGS as NODE_CLASS_MAPPINGS_ZHO
from .Zho_Standard_new_EN import NODE_CLASS_MAPPINGS as NODE_CLASS_MAPPINGS_EN

# Combine the dictionaries
NODE_CLASS_MAPPINGS = {**NODE_CLASS_MAPPINGS_ZHO, **NODE_CLASS_MAPPINGS_EN}

__all__ = ['NODE_CLASS_MAPPINGS']
Loading

0 comments on commit 1e1708a

Please sign in to comment.