From 45d5c08bbb354bcc7427a7774140e5aa4a2989cb Mon Sep 17 00:00:00 2001 From: yolain Date: Wed, 5 Feb 2025 22:22:15 +0800 Subject: [PATCH] Supplementary Chinese translation --- locales/zh/nodeDefs.json | 1780 +++++++++++++++++++++++++++++++- py/nodes/deprecated.py | 118 +++ py/nodes/image.py | 85 -- py/nodes/logic.py | 28 - tools/convert_locale_format.py | 5 + 5 files changed, 1868 insertions(+), 148 deletions(-) diff --git a/locales/zh/nodeDefs.json b/locales/zh/nodeDefs.json index 7fb1708..e4a577b 100644 --- a/locales/zh/nodeDefs.json +++ b/locales/zh/nodeDefs.json @@ -28,11 +28,21 @@ }, "easy positive": { "display_name": "正面提示词", - "inputs": {} + "inputs": {}, + "outputs": { + "0": { + "name": "正面提示词" + } + } }, "easy negative": { "display_name": "负面提示词", - "inputs": {} + "inputs": {}, + "outputs": { + "0": { + "name": "负面提示词" + } + } }, "easy wildcards": { "display_name": "通配符提示词", @@ -55,6 +65,40 @@ "multiline_mode": { "name": "多行模式" } + }, + "outputs": { + "0": { + "name": "提示词" + }, + "1": { + "name": "通配填充词" + } + } + }, + "easy prompt": { + "display_name": "提示词", + "inputs": { + "prefix": { + "name": "前缀" + }, + "subject": { + "name": "主体" + }, + "action": { + "name": "动作" + }, + "clothes": { + "name": "衣服" + }, + "environment": { + "name": "环境" + }, + "background": { + "name": "背景" + }, + "nsfw": { + "name": "为爱鼓掌" + } } }, "easy promptList": { @@ -63,6 +107,11 @@ "optional_prompt_list": { "name": "列表(可选)" } + }, + "outputs": { + "0": { + "name": "列表" + } } }, "easy promptLine": { @@ -77,6 +126,14 @@ "max_rows": { "name": "最大行数" } + }, + "outputs": { + "0": { + "name": "字符串" + }, + "1": { + "name": "COMBO" + } } }, "easy promptConcat": { @@ -91,6 +148,11 @@ "separator": { "name": "间隔符" } + }, + "outputs": { + "0": { + "name": "提示词" + } } }, "easy promptReplace": { @@ -117,6 +179,11 @@ "replace3": { "name": "替换_3" } + }, + "outputs": { + "0": { + "name": "提示词" + } } }, "easy stylesSelector": { @@ -131,6 +198,14 @@ "styles": { "name": "风格类型" } + }, + "outputs": { + "0": { + "name": "正面提示词" + }, + "1": { + "name": "负面提示词" + } } }, "easy portraitMaster": { @@ -247,6 +322,14 @@ "photorealism_improvement": { "name": "照片真实度" } + }, + "outputs": { + "0": { + "name": "正面提示词" + }, + "1": { + "name": "负面提示词" + } } }, "easy fullLoader": { @@ -255,6 +338,9 @@ "optional_lora_stack": { "name": "LoRA堆(可选)" }, + "optional_controlnet_stack": { + "name": "ControlNet堆(可选)" + }, "model_override": { "name": "模型(可选)" }, @@ -318,6 +404,20 @@ "a1111_prompt_style": { "name": "A1111提示词风格" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "4": { + "name": "正面条件" + }, + "5": { + "name": "负面条件" + } } }, "easy a1111Loader": { @@ -326,6 +426,9 @@ "optional_lora_stack": { "name": "LoRA堆(可选)" }, + "optional_controlnet_stack": { + "name": "ControlNet堆(可选)" + }, "ckpt_name": { "name": "模型名称" }, @@ -365,6 +468,14 @@ "a1111_prompt_style": { "name": "A1111提示词风格" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + } } }, "easy comfyLoader": { @@ -373,6 +484,9 @@ "optional_lora_stack": { "name": "LoRA堆(可选)" }, + "optional_controlnet_stack": { + "name": "ControlNet堆(可选)" + }, "ckpt_name": { "name": "模型名称" }, @@ -409,6 +523,14 @@ "negative": { "name": "负面提示词" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + } } }, "easy hunyuanDiTLoader": { @@ -441,6 +563,17 @@ "batch_size": { "name": "批次大小" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "VAE" + } } }, "easy cascadeLoader": { @@ -479,6 +612,17 @@ "a1111_prompt_style": { "name": "A1111提示词风格" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型_C" + }, + "2": { + "name": "Latent_C" + } } }, "easy kolorsLoader": { @@ -517,6 +661,17 @@ "auto_clean_gpu": { "name": "自动清理GPU" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "VAE" + } } }, "easy fluxLoader": { @@ -555,6 +710,17 @@ "batch_size": { "name": "批次大小" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "VAE" + } } }, "easy pixArtLoader": { @@ -596,6 +762,60 @@ "batch_size": { "name": "批次大小" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "VAE" + } + } + }, + "easy mochiLoader": { + "display_name": "简易加载器(Mochi)", + "inputs": { + "model_override": { + "name": "模型(可选)" + }, + "clip_override": { + "name": "CLIP(可选)" + }, + "vae_override": { + "name": "VAE(可选)" + }, + "ckpt_name": { + "name": "模型名称" + }, + "vae_name": { + "name": "VAE" + }, + "resolution": { + "name": "分辨率" + }, + "empty_latent_width": { + "name": "宽度" + }, + "empty_latent_height": { + "name": "高度" + }, + "length": { + "name": "视频长度" + }, + "batch_size": { + "name": "批次大小" + } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + } } }, "easy zero123Loader": { @@ -634,6 +854,14 @@ "azimuth": { "name": "方位角" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + } } }, "easy dynamiCrafterLoader": { @@ -672,6 +900,17 @@ "scale_latents": { "name": "缩放Latent" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "VAE" + } } }, "easy svdLoader": { @@ -713,6 +952,14 @@ "augmentation_level": { "name": "增强" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + } } }, "easy sv3dLoader": { @@ -742,6 +989,17 @@ "easing_mode": { "name": "渐变模式" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "插值日志" + } } }, "easy loraStack": { @@ -819,6 +1077,11 @@ "lora_10_strength": { "name": "LoRA_10_权重" } + }, + "outputs": { + "0": { + "name": "LoRA堆" + } } }, "easy controlnetStack": { @@ -1016,6 +1279,11 @@ "scale_soft_weight_10": { "name": "ControlNet_10_柔和缩放" } + }, + "outputs": { + "0": { + "name": "ControlNet堆" + } } }, "easy controlnetLoader": { @@ -1039,6 +1307,17 @@ "scale_soft_weights": { "name": "缩放柔和权重" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "正面条件" + }, + "2": { + "name": "负面条件" + } } }, "easy controlnetLoaderADV": { @@ -1068,6 +1347,17 @@ "scale_soft_weights": { "name": "缩放柔和权重" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "正面条件" + }, + "2": { + "name": "负面条件" + } } }, "easy controlnetLoader++": { @@ -1100,6 +1390,17 @@ "union_type": { "name": "Union类型" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "正面条件" + }, + "2": { + "name": "负面条件" + } } }, "easy LLLiteLoader": { @@ -1126,27 +1427,13 @@ "end_percent": { "name": "结束时间" } - } - }, - "easy forLoopStart": { - "display_name": "For循环-起始", - "inputs": { - "initial_value1": { - "name": "初始值1" + }, + "outputs": { + "0": { + "name": "模型" }, - "total": { - "name": "总量" - } - } - }, - "easy forLoopEnd": { - "display_name": "For循环-结束", - "inputs": { - "flow": { - "name": "流" - }, - "initial_value1": { - "name": "初始值1" + "1": { + "name": "模型" } } }, @@ -1162,6 +1449,11 @@ "index": { "name": "编号" } + }, + "outputs": { + "0": { + "name": "值" + } } }, "easy imageIndexSwitch": { @@ -1176,6 +1468,11 @@ "index": { "name": "编号" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy textIndexSwitch": { @@ -1190,6 +1487,11 @@ "index": { "name": "编号" } + }, + "outputs": { + "0": { + "name": "文本" + } } }, "easy conditioningIndexSwitch": { @@ -1204,6 +1506,11 @@ "index": { "name": "编号" } + }, + "outputs": { + "0": { + "name": "条件" + } } }, "easy mathString": { @@ -1221,6 +1528,11 @@ "case_sensitive": { "name": "区分大小写" } + }, + "outputs": { + "0": { + "name": "布尔" + } } }, "easy mathInt": { @@ -1235,6 +1547,11 @@ "operation": { "name": "操作" } + }, + "outputs": { + "0": { + "name": "整数" + } } }, "easy mathFloat": { @@ -1249,6 +1566,11 @@ "operation": { "name": "操作" } + }, + "outputs": { + "0": { + "name": "布尔" + } } }, "easy latentNoisy": { @@ -1290,6 +1612,17 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "Latent" + }, + "2": { + "name": "伽马值" + } } }, "easy latentCompositeMaskedWithCond": { @@ -1316,6 +1649,17 @@ "replace_text": { "name": "替换文字" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "Latent" + }, + "2": { + "name": "条件" + } } }, "easy injectNoiseToLatent": { @@ -1348,6 +1692,11 @@ "mix_randn_amount": { "name": "混合随机数" } + }, + "outputs": { + "0": { + "name": "Latent" + } } }, "easy seed": { @@ -1359,6 +1708,11 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "随机种" + } } }, "easy globalSeed": { @@ -1393,6 +1747,17 @@ "crop_multi": { "name": "裁剪乘数" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + }, + "2": { + "name": "BBox" + } } }, "easy preSampling": { @@ -1431,6 +1796,11 @@ "latent": { "name": "Latent(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingAdvanced": { @@ -1481,6 +1851,11 @@ "latent": { "name": "Latent(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingNoiseIn": { @@ -1522,6 +1897,11 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingCustom": { @@ -1545,6 +1925,9 @@ "guider": { "name": "引导" }, + "cfg": { + "name": "CFG" + }, "sampler_name": { "name": "采样器" }, @@ -1554,6 +1937,9 @@ "steps": { "name": "步数" }, + "flip_sigmas": { + "name": "翻转Sigmas" + }, "denoise": { "name": "降噪" }, @@ -1566,6 +1952,11 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingSdTurbo": { @@ -1604,6 +1995,11 @@ "latent": { "name": "Latent(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingCascade": { @@ -1651,6 +2047,17 @@ "latent_c": { "name": "LatentC(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型_B" + }, + "2": { + "name": "Latent_B" + } } }, "easy preSamplingLayerDiffusion": { @@ -1695,6 +2102,11 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy preSamplingLayerDiffusionADDTL": { @@ -1730,6 +2142,11 @@ "blended_promt": { "name": "混合提示词" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "dynamicThresholdingFull": { @@ -1771,6 +2188,11 @@ "interpolate_phi": { "name": "插值phi" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy preSamplingDynamicCFG": { @@ -1812,6 +2234,11 @@ "latent": { "name": "Latent(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy fullkSampler": { @@ -1868,6 +2295,32 @@ "control_before_generate": { "name": "运行前操作" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + }, + "2": { + "name": "模型" + }, + "3": { + "name": "正面条件" + }, + "4": { + "name": "负面条件" + }, + "5": { + "name": "图像转Latent" + }, + "6": { + "name": "Latent" + }, + "7": { + "name": "随机种" + } } }, "easy kSampler": { @@ -1882,6 +2335,14 @@ "model": { "name": "模型(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } } }, "easy kSamplerTiled": { @@ -1899,6 +2360,42 @@ "model": { "name": "模型(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } + } + }, + "easy kSamplerCustom": { + "display_name": "简易k采样器(自定义)", + "inputs": { + "pipe": { + "name": "节点束" + }, + "model": { + "name": "模型(可选)" + }, + "image_output": { + "name": "图像输出" + } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "输出" + }, + "2": { + "name": "降噪输出" + }, + "3": { + "name": "图像" + } } }, "easy kSamplerLayerDiffusion": { @@ -1913,6 +2410,20 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "透明图像" + }, + "2": { + "name": "原图像" + }, + "3": { + "name": "Alpha" + } } }, "easy kSamplerInpainting": { @@ -1933,6 +2444,14 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } } }, "easy kSamplerDownscaleUnet": { @@ -1953,6 +2472,14 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } } }, "easy kSamplerSDTurbo": { @@ -1967,6 +2494,14 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } } }, "easy fullCascadeKSampler": { @@ -2008,6 +2543,17 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型B" + }, + "2": { + "name": "LatentB" + } } }, "easy cascadeKSampler": { @@ -2022,6 +2568,14 @@ "model_c": { "name": "模型C(可选)" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + } } }, "easy unSampler": { @@ -2060,6 +2614,14 @@ "normalize": { "name": "规格化" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "Latent" + } } }, "easy pipeIn": { @@ -2086,6 +2648,11 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy pipeOut": { @@ -2094,6 +2661,29 @@ "pipe": { "name": "节点束" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "正面条件" + }, + "3": { + "name": "负面条件" + }, + "4": { + "name": "图像转Latent" + }, + "5": { + "name": "Latent" + }, + "6": { + "name": "图像" + } } }, "easy pipeToBasicPipe": { @@ -2102,6 +2692,11 @@ "pipe": { "name": "节点束" } + }, + "outputs": { + "0": { + "name": "基础节点束" + } } }, "easy pipeBatchIndex": { @@ -2116,6 +2711,11 @@ "length": { "name": "长度" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy pipeEdit": { @@ -2181,6 +2781,54 @@ "conditioning_mode": { "name": "条件模式" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "正面条件" + }, + "3": { + "name": "正面条件" + }, + "4": { + "name": "负面条件" + }, + "5": { + "name": "负面条件" + }, + "6": { + "name": "VAE" + }, + "7": { + "name": "CLIP" + }, + "8": { + "name": "图像转Latent" + }, + "9": { + "name": "Latent" + }, + "10": { + "name": "图像" + } + } + }, + "easy pipeEditPrompt": { + "display_name": "节点束编辑提示词", + "inputs": { + "pipe": { + "name": "节点束" + } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy XYPlot": { @@ -2204,6 +2852,11 @@ "y_axis": { "name": "Y轴" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy XYPlotAdvanced": { @@ -2221,6 +2874,11 @@ "flip_xy": { "name": "XY互换" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy XYInputs: Seeds++ Batch": { @@ -2286,6 +2944,23 @@ } } }, + "easy XYInputs: FluxGuidance": { + "display_name": "XY输入: Flux引导", + "inputs": { + "batch_count": { + "name": "个数" + }, + "first_guidance": { + "name": "初始引导" + }, + "end_guidance": { + "name": "最终引导" + }, + "last_guidance": { + "name": "最终引导" + } + } + }, "easy XYInputs: Denoise": { "display_name": "XY输入: 降噪", "inputs": { @@ -3163,6 +3838,17 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + }, + "2": { + "name": "Latent" + } } }, "easy ultralyticsDetectorPipe": { @@ -3183,6 +3869,11 @@ "open_segm": { "name": "开启Segm检测" } + }, + "outputs": { + "0": { + "name": "BBox节点束" + } } }, "easy samLoaderPipe": { @@ -3236,6 +3927,11 @@ "sam_mask_hint_use_negative": { "name": "SAM负面遮罩提示" } + }, + "outputs": { + "0": { + "name": "SAM模型节点束" + } } }, "easy preMaskDetailerFix": { @@ -3408,6 +4104,29 @@ "cycle": { "name": "循环" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + }, + "2": { + "name": "细化图像" + }, + "3": { + "name": "细化部分" + }, + "4": { + "name": "遮罩" + }, + "5": { + "name": "细化节点束" + }, + "6": { + "name": "ControlNet图像" + } } }, "easy detailerFix": { @@ -3422,6 +4141,20 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "图像" + }, + "2": { + "name": "细化图像" + }, + "3": { + "name": "细化部分" + } } }, "easy imageRemoveBG": { @@ -3436,6 +4169,14 @@ "save_prefix": { "name": "保存前缀" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + } } }, "easy fooocusInpaintLoader": { @@ -3447,10 +4188,15 @@ "patch": { "name": "patch" } + }, + "outputs": { + "0": { + "name": "patch" + } } }, "easy loraStackApply": { - "display_name": "应用 LoRA 堆", + "display_name": "应用LoRA堆", "inputs": { "lora_stack": { "name": "LoRA堆可选" @@ -3461,10 +4207,18 @@ "optional_clip": { "name": "CLIP(可选)" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "CLIP" + } } }, "easy controlnetStackApply": { - "display_name": "应用 ControlNet 堆", + "display_name": "应用ControlNet堆", "inputs": { "controlnet_stack": { "name": "ControlNet堆" @@ -3472,6 +4226,11 @@ "pipe": { "name": "pipe" } + }, + "outputs": { + "0": { + "name": "pipe" + } } }, "easy ipadapterApply": { @@ -3507,6 +4266,20 @@ "use_tiled": { "name": "分块" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "分块图像" + }, + "2": { + "name": "遮罩" + }, + "3": { + "name": "IPAdapter" + } } }, "easy ipadapterApplyADV": { @@ -3560,6 +4333,20 @@ "use_batch": { "name": "分批" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "分块图像" + }, + "2": { + "name": "遮罩" + }, + "3": { + "name": "IPAdapter" + } } }, "easy ipadapterApplyFaceIDKolors": { @@ -3619,6 +4406,20 @@ "use_batch": { "name": "分批" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "分块图像" + }, + "2": { + "name": "遮罩" + }, + "3": { + "name": "IPAdapter" + } } }, "easy ipadapterApplyEncoder": { @@ -3669,6 +4470,20 @@ "combine_method": { "name": "合并方式" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "IPAdapter" + }, + "2": { + "name": "正面嵌入组" + }, + "3": { + "name": "负面嵌入组" + } } }, "easy ipadapterApplyEmbeds": { @@ -3704,6 +4519,14 @@ "embeds_scaling": { "name": "嵌入组缩放" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "IPAdapter" + } } }, "easy ipadapterStyleComposition": { @@ -3760,6 +4583,14 @@ "cache_mode": { "name": "缓存模式" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "IPAdapter" + } } }, "easy ipadapterApplyRegional": { @@ -3798,6 +4629,20 @@ "end_at": { "name": "结束位置" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "IPAdapter参数组" + }, + "2": { + "name": "正面条件" + }, + "3": { + "name": "负面条件" + } } }, "easy ipadapterApplyFromParams": { @@ -3827,6 +4672,14 @@ "cache_mode": { "name": "缓存模式" } + }, + "outputs": { + "0": { + "name": "模型" + }, + "1": { + "name": "IPAdapter" + } } }, "easy instantIDApply": { @@ -3874,6 +4727,20 @@ "noise": { "name": "噪波" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "正面条件" + }, + "3": { + "name": "负面条件" + } } }, "easy instantIDApplyADV": { @@ -3927,6 +4794,20 @@ "noise": { "name": "噪波" } + }, + "outputs": { + "0": { + "name": "节点束" + }, + "1": { + "name": "模型" + }, + "2": { + "name": "正面条件" + }, + "3": { + "name": "负面条件" + } } }, "easy pulIDApply": { @@ -3959,6 +4840,11 @@ "end_at": { "name": "结束位置" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy pulIDApplyADV": { @@ -4000,6 +4886,11 @@ "end_at": { "name": "结束位置" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy styleAlignedBatchAlign": { @@ -4017,6 +4908,11 @@ "scale": { "name": "scale" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy icLightApply": { @@ -4031,6 +4927,11 @@ "mode": { "name": "模式" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy stableDiffusion3API": { @@ -4063,6 +4964,11 @@ "cost_credit": { "name": "点数" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageInsetCrop": { @@ -4086,6 +4992,11 @@ "bottom": { "name": "下" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageCount": { @@ -4094,6 +5005,24 @@ "images": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "整数" + } + } + }, + "easy imagesCountInDirectory": { + "display_name": "图像计数 (目录)", + "inputs": { + "directory": { + "name": "目录" + } + }, + "outputs": { + "0": { + "name": "整数" + } } }, "easy imageSize": { @@ -4102,6 +5031,14 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "宽度" + }, + "1": { + "name": "高度" + } } }, "easy imageSizeBySide": { @@ -4113,6 +5050,11 @@ "side": { "name": "选择边" } + }, + "outputs": { + "0": { + "name": "分辨率" + } } }, "easy imageSizeByLongerSide": { @@ -4121,6 +5063,11 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "分辨率" + } } }, "easy imageSizeShow": { @@ -4158,6 +5105,11 @@ "crop": { "name": "裁切" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageScaleDownBy": { @@ -4169,6 +5121,11 @@ "scale_by": { "name": "缩小比例" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageScaleDownToSize": { @@ -4183,6 +5140,30 @@ "mode": { "name": "模式" } + }, + "outputs": { + "0": { + "name": "图像" + } + } + }, + "easy imageScaleToNormPixels": { + "display_name": "图像缩放到标准像素", + "inputs": { + "image": { + "name": "图像" + }, + "upscale_method": { + "name": "缩放方式" + }, + "scale_by": { + "name": "缩放比例" + } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageRatio": { @@ -4191,6 +5172,20 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "宽度比率整数" + }, + "1": { + "name": "高度比率整数" + }, + "2": { + "name": "宽度比率浮点" + }, + "3": { + "name": "高度比率浮点" + } } }, "easy imageToMask": { @@ -4202,6 +5197,11 @@ "channel": { "name": "通道" } + }, + "outputs": { + "0": { + "name": "遮罩" + } } }, "easy imageConcat": { @@ -4219,6 +5219,11 @@ "match_image_size": { "name": "匹配图像尺寸" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageListToImageBatch": { @@ -4227,6 +5232,11 @@ "images": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageBatchToImageList": { @@ -4235,6 +5245,11 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageSplitList": { @@ -4243,6 +5258,11 @@ "images": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageSplitGrid": { @@ -4257,6 +5277,11 @@ "column": { "name": "列" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imagesSplitImage": { @@ -4265,6 +5290,85 @@ "images": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "图像_1" + }, + "1": { + "name": "图像_2" + }, + "2": { + "name": "图像_3" + }, + "3": { + "name": "图像_4" + }, + "4": { + "name": "图像_5" + } + } + }, + "easy imageSplitTiles": { + "display_name": "图像分块", + "inputs": { + "image": { + "name": "图像" + }, + "overlap_ratio": { + "name": "重叠比例" + }, + "overlap_offset": { + "name": "重叠偏移" + }, + "tiles_rows": { + "name": "分块行数" + }, + "tiles_columns": { + "name": "分块列数" + }, + "norm": { + "name": "标准化" + } + }, + "outputs": { + "0": { + "name": "分块图像" + }, + "1": { + "name": "遮罩" + }, + "2": { + "overlap": "重叠BBox" + }, + "3": { + "name": "分块总数" + } + } + }, + "easy imageTilesFromBatch": { + "display_name": "从图像批次获取分块", + "inputs": { + "tiles": { + "name": "分块" + }, + "masks": { + "name": "遮罩" + }, + "overlap": { + "name": "重叠位置" + }, + "index": { + "name": "索引" + } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + } } }, "easy imagecropFromMask": { @@ -4285,6 +5389,17 @@ "bbox_smooth_alpha": { "name": "BBox平滑Alpha" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + }, + "2": { + "name": "BBox" + } } }, "easy imageCropFromMask": { @@ -4305,6 +5420,17 @@ "bbox_smooth_alpha": { "name": "BBox平滑Alpha" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + }, + "2": { + "name": "BBox" + } } }, "easy imageUncropFromBBOX": { @@ -4328,6 +5454,11 @@ "use_square_mask": { "name": "方形遮罩" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imagePixelPerfect": { @@ -4348,6 +5479,11 @@ "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "分辨率(整数)" + } } }, "easy imageSave": { @@ -4376,6 +5512,14 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + } } }, "easy imageChooser": { @@ -4384,6 +5528,11 @@ "images": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageColorMatch": { @@ -4401,6 +5550,11 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageDetailTransfer": { @@ -4427,6 +5581,11 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy imageInterrogator": { @@ -4441,14 +5600,24 @@ "use_lowvram": { "name": "低显存" } + }, + "outputs": { + "0": { + "name": "提示词" + } } }, "easy imageToBase64": { - "display_name": "图像到Bae64", + "display_name": "图像到Base64", "inputs": { "image": { "name": "图像" } + }, + "outputs": { + "0": { + "name": "字符串" + } } }, "easy joinImageBatch": { @@ -4460,6 +5629,11 @@ "mode": { "name": "合并模式" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy removeLocalImage": { @@ -4470,6 +5644,46 @@ } } }, + "easy makeImageForICLora": { + "display_name": "制作ICLora图像", + "inputs": { + "image_1": { + "name": "图像1" + }, + "image_2": { + "name": "图像2" + }, + "mask_1": { + "name": "遮罩1" + }, + "mask_2": { + "name": "遮罩2" + }, + "direction": { + "name": "方向" + }, + "pixels": { + "name": "限制像素" + } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + }, + "2": { + "name": "上下文遮罩" + }, + "3": { + "name": "宽" + }, + "4": { + "name": "高" + } + } + }, "easy poseEditor": { "display_name": "姿势编辑器", "inputs": { @@ -4482,6 +5696,11 @@ "Reset pose": { "name": "重置姿势" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy loadImageBase64": { @@ -4493,6 +5712,14 @@ "image_output": { "name": "图像输出" } + }, + "outputs": { + "0": { + "name": "图像" + }, + "1": { + "name": "遮罩" + } } }, "easy applyFooocusInpaint": { @@ -4510,6 +5737,11 @@ "patch": { "name": "patch" } + }, + "outputs": { + "0": { + "name": "模型" + } } }, "easy applyBrushNet": { @@ -4539,6 +5771,11 @@ "end_at": { "name": "结束位置" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy applyPowerPaint": { @@ -4580,6 +5817,11 @@ "save_memory": { "name": "save_memory" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy applyInpaint": { @@ -4603,6 +5845,11 @@ "grow_mask_by": { "name": "遮罩扩展" } + }, + "outputs": { + "0": { + "name": "节点束" + } } }, "easy showSpentTime": { @@ -4619,6 +5866,17 @@ "pipe": { "name": "节点束" } + }, + "outputs": { + "0": { + "name": "模型名称" + }, + "1": { + "name": "VAE名称" + }, + "2": { + "name": "LORA名称" + } } }, "easy sliderControl": { @@ -4630,6 +5888,11 @@ "model_type": { "name": "模型类型" } + }, + "outputs": { + "0": { + "name": "层权重" + } } }, "easy ckptNames": { @@ -4638,6 +5901,11 @@ "ckpt_name": { "name": "模型名称" } + }, + "outputs": { + "0": { + "name": "模型名称" + } } }, "easy controlnetNames": { @@ -4646,6 +5914,11 @@ "controlnet_name": { "name": "ControlNet名称" } + }, + "outputs": { + "0": { + "name": "ControlNet名称" + } } }, "easy string": { @@ -4654,6 +5927,11 @@ "value": { "name": "值" } + }, + "outputs": { + "0": { + "name": "字符串" + } } }, "easy int": { @@ -4662,6 +5940,11 @@ "value": { "name": "值" } + }, + "outputs": { + "0": { + "name": "整数" + } } }, "easy rangeInt": { @@ -4685,6 +5968,14 @@ "num_steps": { "name": "步进数量" } + }, + "outputs": { + "0": { + "name": "范围" + }, + "1": { + "name": "范围大小" + } } }, "easy float": { @@ -4693,6 +5984,11 @@ "value": { "name": "值" } + }, + "outputs": { + "0": { + "name": "浮点" + } } }, "easy rangeFloat": { @@ -4716,10 +6012,18 @@ "num_steps": { "name": "步进数量" } + }, + "outputs": { + "0": { + "name": "范围" + }, + "1": { + "name": "范围大小" + } } }, "easy whileLoopStart": { - "display_name": "While循环-起始", + "display_name": "While循环-开始", "inputs": { "initial_value0": { "name": "初始值0" @@ -4754,13 +6058,48 @@ "condition": { "name": "条件" } + }, + "outputs": { + "0": { + "name": "开始" + }, + "1": { + "name": "值0" + }, + "2": { + "name": "值1" + }, + "3": { + "name": "值2" + }, + "4": { + "name": "值3" + }, + "5": { + "name": "值4" + }, + "6": { + "name": "值5" + }, + "7": { + "name": "值6" + }, + "8": { + "name": "值7" + }, + "9": { + "name": "值8" + }, + "10": { + "name": "值9" + } } }, "easy whileLoopEnd": { "display_name": "While循环-结束", "inputs": { "flow": { - "name": "流" + "name": "结束" }, "initial_value0": { "name": "初始值0" @@ -4795,6 +6134,200 @@ "condition": { "name": "条件" } + }, + "outputs": { + "0": { + "name": "值0" + }, + "1": { + "name": "值1" + }, + "2": { + "name": "值2" + }, + "3": { + "name": "值3" + }, + "4": { + "name": "值4" + }, + "5": { + "name": "值5" + }, + "6": { + "name": "值6" + }, + "7": { + "name": "值7" + }, + "8": { + "name": "值8" + }, + "9": { + "name": "值9" + } + } + }, + "easy forLoopStart": { + "display_name": "For循环-开始", + "inputs": { + "total": { + "name": "总量" + } + }, + "outputs": { + "0": { + "name": "开始" + }, + "1": { + "name": "索引" + } + } + }, + "easy forLoopEnd": { + "display_name": "For循环-结束", + "inputs": { + "flow": { + "name": "结束" + } + }, + "outputs": { + "0": { + "name": "值1" + } + } + }, + "easy ab": { + "display_name": "A 或 B", + "inputs": { + "in":{ + "name": "输入" + } + } + }, + "easy blocker": { + "display_name": "阻塞器", + "inputs": { + "in":{ + "name": "输入" + }, + "continue": { + "name": "是否继续" + } + }, + "outputs": { + "0": { + "name": "输出" + } + } + }, + "easy ifElse": { + "display_name": "是否判断", + "inputs": { + "on_true": { + "name": "真流程" + }, + "on_false": { + "name": "假流程" + }, + "boolean": { + "name": "是否为真" + } + } + }, + "easy isNone": { + "display_name": "是否为空", + "inputs": { + "value": { + "any": "任何" + } + }, + "outputs": { + "0": { + "name": "布尔值" + } + } + }, + "easy isFileExist": { + "display_name": "文件是否存在", + "inputs": { + "file_path": { + "name": "文件路径" + }, + "file_name": { + "name": "文件名" + }, + "file_extension": { + "name": "文件扩展名" + } + }, + "outputs": { + "0": { + "name": "布尔值" + } + } + }, + "easy isMaskEmpty": { + "display_name": "遮罩是否为空", + "inputs": { + "mask": { + "name": "遮罩" + } + }, + "outputs": { + "0": { + "name": "布尔值" + } + } + }, + "easy outputToList": { + "display_name": "输出到列表", + "inputs": { + "tuple": { + "name": "元组" + } + }, + "outputs": { + "0": { + "name": "列表" + } + } + }, + "easy pixels": { + "display_name": "标准化像素", + "inputs": { + "resolution": { + "name": "分辨率" + }, + "width": { + "name": "宽度" + }, + "height": { + "name": "高度" + }, + "scale": { + "name": "缩放洗漱" + }, + "flip_w/h": { + "name": "翻转宽高" + } + }, + "outputs": { + "0": { + "name": "宽度标准化" + }, + "1": { + "name": "高度标准化" + }, + "2": { + "name": "宽度" + }, + "3": { + "name": "高度" + }, + "4": { + "name": "放大系数" + } } }, "easy boolean": { @@ -4803,6 +6336,11 @@ "value": { "name": "值" } + }, + "outputs": { + "0": { + "name": "布尔" + } } }, "easy compare": { @@ -4817,13 +6355,10 @@ "comparison": { "name": "比较方式" } - } - }, - "easy if": { - "display_name": "If判断", - "inputs": { - "any": { - "name": "输入任何" + }, + "outputs": { + "0": { + "name": "布尔" } } }, @@ -4839,6 +6374,11 @@ "boolean": { "name": "布尔" } + }, + "outputs": { + "0": { + "name": "图像" + } } }, "easy textSwitch": { @@ -4853,6 +6393,22 @@ "input": { "name": "输入" } + }, + "outputs": { + "0": { + "name": "字符串" + } + } + }, + "easy anythingInversedSwitch": { + "display_name": "任何反转切换", + "inputs": { + "in": { + "name": "输入" + }, + "index": { + "name": "索引" + } } }, "easy isSDXL": { @@ -4864,6 +6420,11 @@ "optional_clip": { "name": "CLIP(可选)" } + }, + "outputs": { + "0": { + "name": "布尔" + } } }, "easy xyAny": { @@ -4878,6 +6439,59 @@ "direction": { "name": "方向" } + }, + "outputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + } + } + }, + "easy lengthAnything": { + "display_name": "任何长度", + "inputs": { + "any": { + "name": "输入任何" + } + }, + "outputs": { + "0": { + "name": "长度" + } + } + }, + "easy indexAnything": { + "display_name": "任何索引", + "inputs": { + "any": { + "name": "输入任何" + }, + "index": { + "name": "索引" + } + }, + "outputs": { + "0": { + "name": "输出" + } + } + }, + "easy batchAnything": { + "display_name": "任何批次组合", + "inputs": { + "any_1": { + "name": "任何1" + }, + "any_2": { + "name": "任何2" + } + }, + "outputs": { + "0": { + "name": "批次" + } } }, "easy convertAnything": { @@ -4927,11 +6541,107 @@ } }, "easy cleanGpuUsed": { - "display_name": "清理GPU占用", + "display_name": "清理显存占用", "inputs": { "anything": { "name": "输入任何" } } + }, + "easy saveText": { + "display_name": "保存文本", + "inputs": { + "image": { + "name": "图像(可选)" + }, + "text": { + "name": "文本" + }, + "output_file_path": { + "name": "输出文件路径" + }, + "filename": { + "name": "文件名" + }, + "overwrite": { + "name": "是否覆盖" + } + }, + "outputs": { + "0": { + "name": "文本" + }, + "1": { + "name": "图像" + } + } + }, + "easy sleep": { + "display_name": "延迟执行", + "inputs": { + "any": { + "name": "输入任何" + }, + "delay": { + "name": "秒数" + } + }, + "outputs": { + "0": { + "name": "输出" + } + } + }, + "easy fluxPromptGenAPI": { + "display_name": "提示词扩写(FLUXAI)", + "inputs": { + "cookie_override": { + "name": "Cookie可选" + } + }, + "outputs": { + "0": { + "name": "提示词" + } + } + }, + "easy joyCaption2API": { + "display_name": "JoyCaption2(硅基流动)", + "inputs": { + "image": { + "name": "图像" + }, + "do_sample": { + "name": "执行采样" + }, + "temperature": { + "name": "温度" + }, + "max_tokens": { + "name": "最大词令牌数" + }, + "caption_type": { + "name": "提示词类型" + }, + "caption_length": { + "name": "提示词长度" + }, + "name_input": { + "name": "名称输入" + } + }, + "outputs": { + "0": { + "name": "提示词" + } + } + }, + "easy if": { + "display_name": "If判断", + "inputs": { + "any": { + "name": "输入任何" + } + } } } \ No newline at end of file diff --git a/py/nodes/deprecated.py b/py/nodes/deprecated.py index 8017254..c0e89d7 100644 --- a/py/nodes/deprecated.py +++ b/py/nodes/deprecated.py @@ -1,6 +1,9 @@ +import numpy as np +import json import torch import comfy import comfy.model_management +from PIL.PngImagePlugin import PngInfo from nodes import ConditioningSetMask, RepeatLatentBatch from comfy_extras.nodes_mask import LatentCompositeMasked from ..libs.log import log_node_info, log_node_warn @@ -377,6 +380,115 @@ class stableDiffusion3API: output_image = stableAPI.generate_sd3_image(positive, negative, aspect_ratio, seed=seed, mode=mode, model=model, strength=denoise, image=optional_image) return (output_image,) + +class saveImageLazy(): + def __init__(self): + self.output_dir = folder_paths.get_output_directory() + self.type = "output" + self.compress_level = 4 + + @classmethod + def INPUT_TYPES(s): + return {"required": + {"images": ("IMAGE",), + "filename_prefix": ("STRING", {"default": "ComfyUI"}), + "save_metadata": ("BOOLEAN", {"default": True}), + }, + "optional":{}, + "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, + } + + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("images",) + OUTPUT_NODE = False + FUNCTION = "save" + + DEPRECATED = True + CATEGORY = "EasyUse/🚫 Deprecated" + + def save(self, images, filename_prefix, save_metadata, prompt=None, extra_pnginfo=None): + extension = 'png' + + full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path( + filename_prefix, self.output_dir, images[0].shape[1], images[0].shape[0]) + + results = list() + for (batch_number, image) in enumerate(images): + i = 255. * image.cpu().numpy() + img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8)) + metadata = None + + filename_with_batch_num = filename.replace( + "%batch_num%", str(batch_number)) + + counter = 1 + + if os.path.exists(full_output_folder) and os.listdir(full_output_folder): + filtered_filenames = list(filter( + lambda filename: filename.startswith( + filename_with_batch_num + "_") + and filename[len(filename_with_batch_num) + 1:-4].isdigit(), + os.listdir(full_output_folder) + )) + + if filtered_filenames: + max_counter = max( + int(filename[len(filename_with_batch_num) + 1:-4]) + for filename in filtered_filenames + ) + counter = max_counter + 1 + + file = f"{filename_with_batch_num}_{counter:05}.{extension}" + + save_path = os.path.join(full_output_folder, file) + + if save_metadata: + metadata = PngInfo() + if prompt is not None: + metadata.add_text("prompt", json.dumps(prompt)) + if extra_pnginfo is not None: + for x in extra_pnginfo: + metadata.add_text( + x, json.dumps(extra_pnginfo[x])) + + img.save(save_path, pnginfo=metadata) + + results.append({ + "filename": file, + "subfolder": subfolder, + "type": self.type + }) + + return {"ui": {"images": results} , "result": (images,)} + +from .logic import saveText, showAnything + +class showAnythingLazy(showAnything): + @classmethod + def INPUT_TYPES(s): + return {"required": {}, "optional": {"anything": (any_type, {}), }, + "hidden": {"unique_id": "UNIQUE_ID", "extra_pnginfo": "EXTRA_PNGINFO", + }} + + RETURN_TYPES = (any_type,) + RETURN_NAMES = ('output',) + INPUT_IS_LIST = True + OUTPUT_NODE = False + OUTPUT_IS_LIST = (False,) + DEPRECATED = True + FUNCTION = "log_input" + CATEGORY = "EasyUse/🚫 Deprecated" + +class saveTextLazy(saveText): + + RETURN_TYPES = ("STRING", "IMAGE") + RETURN_NAMES = ("text", 'image',) + + FUNCTION = "save_text" + OUTPUT_NODE = False + DEPRECATED = True + CATEGORY = "EasyUse/🚫 Deprecated" + NODE_CLASS_MAPPINGS = { "easy if": If, "easy poseEditor": poseEditor, @@ -386,6 +498,9 @@ NODE_CLASS_MAPPINGS = { "easy latentCompositeMaskedWithCond": latentCompositeMaskedWithCond, "easy injectNoiseToLatent": injectNoiseToLatent, "easy stableDiffusion3API": stableDiffusion3API, + "easy saveImageLazy": saveImageLazy, + "easy saveTextLazy": saveTextLazy, + "easy showAnythingLazy": showAnythingLazy, } NODE_DISPLAY_NAME_MAPPINGS = { @@ -397,4 +512,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { "easy latentCompositeMaskedWithCond": "LatentCompositeMaskedWithCond (🚫Deprecated)", "easy injectNoiseToLatent": "InjectNoiseToLatent (🚫Deprecated)", "easy stableDiffusion3API": "StableDiffusion3API (🚫Deprecated)", + "easy saveImageLazy": "SaveImageLazy (🚫Deprecated)", + "easy saveTextLazy": "SaveTextLazy (🚫Deprecated)", + "easy showAnythingLazy": "ShowAnythingLazy (🚫Deprecated)", } \ No newline at end of file diff --git a/py/nodes/image.py b/py/nodes/image.py index c9d45c9..022a81d 100644 --- a/py/nodes/image.py +++ b/py/nodes/image.py @@ -1,7 +1,4 @@ import os -import json -import copy -import hashlib import folder_paths import torch import numpy as np @@ -11,7 +8,6 @@ from comfy_extras.nodes_compositing import JoinImageWithAlpha from server import PromptServer from nodes import MAX_RESOLUTION, NODE_CLASS_MAPPINGS as ALL_NODE_CLASS_MAPPINGS from PIL import Image, ImageDraw, ImageFilter, ImageOps -from PIL.PngImagePlugin import PngInfo import torch.nn.functional as F from torchvision.transforms import Resize, CenterCrop, GaussianBlur from torchvision.transforms.functional import to_pil_image @@ -1920,85 +1916,6 @@ class loadImagesForLoop: # m.update(f.read()) # return m.digest().hex() -class saveImageLazy(): - def __init__(self): - self.output_dir = folder_paths.get_output_directory() - self.type = "output" - self.compress_level = 4 - - @classmethod - def INPUT_TYPES(s): - return {"required": - {"images": ("IMAGE",), - "filename_prefix": ("STRING", {"default": "ComfyUI"}), - "save_metadata": ("BOOLEAN", {"default": True}), - }, - "optional":{}, - "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, - } - - RETURN_TYPES = ("IMAGE",) - RETURN_NAMES = ("images",) - OUTPUT_NODE = False - FUNCTION = "save" - CATEGORY = "EasyUse/Image" - - def save(self, images, filename_prefix, save_metadata, prompt=None, extra_pnginfo=None): - extension = 'png' - - full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path( - filename_prefix, self.output_dir, images[0].shape[1], images[0].shape[0]) - - results = list() - for (batch_number, image) in enumerate(images): - i = 255. * image.cpu().numpy() - img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8)) - metadata = None - - filename_with_batch_num = filename.replace( - "%batch_num%", str(batch_number)) - - counter = 1 - - if os.path.exists(full_output_folder) and os.listdir(full_output_folder): - filtered_filenames = list(filter( - lambda filename: filename.startswith( - filename_with_batch_num + "_") - and filename[len(filename_with_batch_num) + 1:-4].isdigit(), - os.listdir(full_output_folder) - )) - - if filtered_filenames: - max_counter = max( - int(filename[len(filename_with_batch_num) + 1:-4]) - for filename in filtered_filenames - ) - counter = max_counter + 1 - - file = f"{filename_with_batch_num}_{counter:05}.{extension}" - - save_path = os.path.join(full_output_folder, file) - - if save_metadata: - metadata = PngInfo() - if prompt is not None: - metadata.add_text("prompt", json.dumps(prompt)) - if extra_pnginfo is not None: - for x in extra_pnginfo: - metadata.add_text( - x, json.dumps(extra_pnginfo[x])) - - img.save(save_path, pnginfo=metadata) - - results.append({ - "filename": file, - "subfolder": subfolder, - "type": self.type - }) - - return {"ui": {"images": results} , "result": (images,)} - - class makeImageForICRepaint: @classmethod def INPUT_TYPES(s): @@ -2134,7 +2051,6 @@ NODE_CLASS_MAPPINGS = { "easy joinImageBatch": JoinImageBatch, "easy humanSegmentation": humanSegmentation, "easy removeLocalImage": removeLocalImage, - "easy saveImageLazy": saveImageLazy, "easy makeImageForICLora": makeImageForICRepaint } @@ -2174,6 +2090,5 @@ NODE_DISPLAY_NAME_MAPPINGS = { "easy imageToBase64": "Image To Base64", "easy humanSegmentation": "Human Segmentation", "easy removeLocalImage": "Remove Local Image", - "easy saveImageLazy": "Save Image (Lazy)", "easy makeImageForICLora": "Make Image For ICLora" } \ No newline at end of file diff --git a/py/nodes/logic.py b/py/nodes/logic.py index 11fcb5c..f0085b3 100755 --- a/py/nodes/logic.py +++ b/py/nodes/logic.py @@ -1394,21 +1394,6 @@ class showAnything: else: return {"ui": {"text": values}, "result": (values,), } -class showAnythingLazy(showAnything): - @classmethod - def INPUT_TYPES(s): - return {"required": {}, "optional": {"anything": (any_type, {}), }, - "hidden": {"unique_id": "UNIQUE_ID", "extra_pnginfo": "EXTRA_PNGINFO", - }} - - RETURN_TYPES = (any_type,) - RETURN_NAMES = ('output',) - INPUT_IS_LIST = True - OUTPUT_NODE = False - OUTPUT_IS_LIST = (False,) - FUNCTION = "log_input" - CATEGORY = "EasyUse/Logic" - class showTensorShape: @classmethod def INPUT_TYPES(s): @@ -1693,15 +1678,6 @@ class saveText: return result -class saveTextLazy(saveText): - - RETURN_TYPES = ("STRING", "IMAGE") - RETURN_NAMES = ("text", 'image',) - - FUNCTION = "save_text" - OUTPUT_NODE = False - CATEGORY = "EasyUse/Logic" - class sleep: @classmethod @@ -1759,13 +1735,11 @@ NODE_CLASS_MAPPINGS = { "easy batchAnything": batchAnything, "easy convertAnything": convertAnything, "easy showAnything": showAnything, - "easy showAnythingLazy": showAnythingLazy, "easy showTensorShape": showTensorShape, "easy clearCacheKey": clearCacheKey, "easy clearCacheAll": clearCacheAll, "easy cleanGpuUsed": cleanGPUUsed, "easy saveText": saveText, - "easy saveTextLazy": saveTextLazy, "easy sleep": sleep } NODE_DISPLAY_NAME_MAPPINGS = { @@ -1805,12 +1779,10 @@ NODE_DISPLAY_NAME_MAPPINGS = { "easy batchAnything": "Batch Any", "easy convertAnything": "Convert Any", "easy showAnything": "Show Any", - "easy showAnythingLazy": "Show Any (Lazy)", "easy showTensorShape": "Show Tensor Shape", "easy clearCacheKey": "Clear Cache Key", "easy clearCacheAll": "Clear Cache All", "easy cleanGpuUsed": "Clean VRAM Used", "easy saveText": "Save Text", - "easy saveTextLazy": "Save Text (Lazy)", "easy sleep": "Sleep", } diff --git a/tools/convert_locale_format.py b/tools/convert_locale_format.py index 12f755d..e3f0cd2 100644 --- a/tools/convert_locale_format.py +++ b/tools/convert_locale_format.py @@ -26,6 +26,11 @@ def transform_dict(data): **new_dict[k]['inputs'], _key: {"name": _value} } + elif key == 'outputs': + if not new_dict[k].get('outputs'): + new_dict[k]['outputs'] = {} + for idx, (out_key, out_value) in enumerate(value.items()): + new_dict[k]['outputs'][idx] = {"name": out_value} return new_dict def main():