mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-03-16 10:17:06 +08:00
Merge ffdf02f9b16f6690290d5544ba0bdcdc0f851c5b into 650e716dda0a966a083f0efe299f3e83336f920e
This commit is contained in:
commit
d8df867bf7
@ -1100,6 +1100,18 @@ class DynamicSlot(ComfyTypeI):
|
||||
for input in self.inputs:
|
||||
input.validate()
|
||||
|
||||
@comfytype(io_type="IMAGECOMPARE")
|
||||
class ImageCompare(ComfyTypeI):
|
||||
Type = dict
|
||||
|
||||
class Input(WidgetInput):
|
||||
def __init__(self, id: str, display_name: str=None, optional=False, tooltip: str=None,
|
||||
socketless: bool=True):
|
||||
super().__init__(id, display_name, optional, tooltip, None, None, socketless)
|
||||
|
||||
def as_dict(self):
|
||||
return super().as_dict()
|
||||
|
||||
def add_dynamic_id_mapping(d: dict[str, Any], inputs: list[Input], curr_prefix: str, self: DynamicInput=None):
|
||||
dynamic = d.setdefault("dynamic_paths", {})
|
||||
if self is not None:
|
||||
@ -1917,4 +1929,5 @@ __all__ = [
|
||||
"add_to_dict_v1",
|
||||
"add_to_dict_v3",
|
||||
"V3Data",
|
||||
"ImageCompare",
|
||||
]
|
||||
|
||||
53
comfy_extras/nodes_image_compare.py
Normal file
53
comfy_extras/nodes_image_compare.py
Normal file
@ -0,0 +1,53 @@
|
||||
import nodes
|
||||
|
||||
from typing_extensions import override
|
||||
from comfy_api.latest import IO, ComfyExtension
|
||||
|
||||
|
||||
class ImageCompare(IO.ComfyNode):
|
||||
"""Compares two images with a slider interface."""
|
||||
|
||||
@classmethod
|
||||
def define_schema(cls):
|
||||
return IO.Schema(
|
||||
node_id="ImageCompare",
|
||||
display_name="Image Compare",
|
||||
description="Compares two images side by side with a slider.",
|
||||
category="image",
|
||||
is_experimental=True,
|
||||
is_output_node=True,
|
||||
inputs=[
|
||||
IO.Image.Input("image_a", optional=True),
|
||||
IO.Image.Input("image_b", optional=True),
|
||||
IO.ImageCompare.Input("compare_view"),
|
||||
],
|
||||
outputs=[],
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def execute(cls, image_a=None, image_b=None, compare_view=None) -> IO.NodeOutput:
|
||||
result = {"a_images": [], "b_images": []}
|
||||
|
||||
preview_node = nodes.PreviewImage()
|
||||
|
||||
if image_a is not None and len(image_a) > 0:
|
||||
saved = preview_node.save_images(image_a, "comfy.compare.a")
|
||||
result["a_images"] = saved["ui"]["images"]
|
||||
|
||||
if image_b is not None and len(image_b) > 0:
|
||||
saved = preview_node.save_images(image_b, "comfy.compare.b")
|
||||
result["b_images"] = saved["ui"]["images"]
|
||||
|
||||
return IO.NodeOutput(ui=result)
|
||||
|
||||
|
||||
class ImageCompareExtension(ComfyExtension):
|
||||
@override
|
||||
async def get_node_list(self) -> list[type[IO.ComfyNode]]:
|
||||
return [
|
||||
ImageCompare,
|
||||
]
|
||||
|
||||
|
||||
async def comfy_entrypoint() -> ImageCompareExtension:
|
||||
return ImageCompareExtension()
|
||||
Loading…
x
Reference in New Issue
Block a user