119 lines
3.2 KiB
Python
119 lines
3.2 KiB
Python
import hashlib
|
|
import os
|
|
import json
|
|
import base64
|
|
import random
|
|
from server import PromptServer
|
|
from aiohttp import web
|
|
from PIL import Image, ImageOps
|
|
import torch
|
|
import numpy as np
|
|
import folder_paths
|
|
from nodes import PreviewImage
|
|
|
|
# Directory node save settings
|
|
CHUNK_SIZE = 1024
|
|
dir_painter_node = os.path.dirname(__file__)
|
|
extension_path = os.path.join(os.path.abspath(dir_painter_node))
|
|
|
|
|
|
class PreviewImageMagnifier(PreviewImage):
|
|
FUNCTION = "do_it"
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"image": ("IMAGE",),
|
|
},
|
|
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},
|
|
}
|
|
|
|
def do_it(
|
|
self,
|
|
image=None,
|
|
filename_prefix="YC.PreviewImageMagnifier.",
|
|
prompt=None,
|
|
extra_pnginfo=None,
|
|
):
|
|
result = {"ui": {"a_images": []}}
|
|
result["ui"]["a_images"] = self.save_images(
|
|
image, filename_prefix, prompt, extra_pnginfo
|
|
)["ui"]["images"]
|
|
return result
|
|
|
|
class XYPreviewImageMagnifier(PreviewImage):
|
|
FUNCTION = "do_it"
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"images": ("IMAGE",),
|
|
"img_per_row": ("INT", {"default": 1, "min": 1, "max": 10, "step": 1}),
|
|
},
|
|
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},
|
|
}
|
|
|
|
def do_it(
|
|
self,
|
|
images=None,
|
|
img_per_row=1,
|
|
filename_prefix="YC.PreviewImageMagnifier.",
|
|
prompt=None,
|
|
extra_pnginfo=None,
|
|
):
|
|
result = {"ui": {"a_images": []}}
|
|
result["ui"]["a_images"] = self.save_images(
|
|
images, filename_prefix, prompt, extra_pnginfo
|
|
)["ui"]["images"]
|
|
return result
|
|
|
|
class ImageComparerMagnifier(PreviewImage):
|
|
FUNCTION = "do_it"
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
obj = {
|
|
"required": {
|
|
"img_count": ("INT", {"default": 2, "min": 2, "max": 2, "step": 1}),
|
|
"image_0": ("IMAGE",),
|
|
"image_1": ("IMAGE",),
|
|
},
|
|
"optional": {},
|
|
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},
|
|
}
|
|
for i in range(2, 4):
|
|
obj["optional"][f"image_{i}"] = ("IMAGE",)
|
|
return obj
|
|
|
|
def do_it(
|
|
self,
|
|
img_count=2,
|
|
filename_prefix="YC.ImageComparatorMagnifier.",
|
|
prompt=None,
|
|
extra_pnginfo=None,
|
|
**kwargs
|
|
):
|
|
imgs = [kwargs[f"image_{i}"] for i in range(img_count)]
|
|
result = {"ui": {}}
|
|
for i, img in enumerate(imgs):
|
|
result["ui"][f"image_{i}"] = self.save_images(
|
|
img, filename_prefix, prompt, extra_pnginfo
|
|
)["ui"]["images"]
|
|
print(result)
|
|
return result
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"YC.PreviewImageMagnifier": PreviewImageMagnifier,
|
|
"YC.ImageComparerMagnifier": ImageComparerMagnifier,
|
|
"YC.XYPreviewImageMagnifier": XYPreviewImageMagnifier,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"YC.PreviewImageMagnifier": "Preview Image Magnifier",
|
|
"YC.ImageComparerMagnifier": "Image Comparer Magnifier",
|
|
"YC.XYPreviewImageMagnifier": "XY Preview Image Magnifier",
|
|
}
|