Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 49 additions & 49 deletions py/add_grain.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,50 +1,50 @@
import torch
import time
from .imagefunc import log, tensor2pil, image_add_grain, pil2tensor



class AddGrain:

def __init__(self):
self.NODE_NAME = 'AddGrain'


@classmethod
def INPUT_TYPES(self):

return {
"required": {
"image": ("IMAGE", ), #
"grain_power": ("FLOAT", {"default": 0.5, "min": 0, "max": 1, "step": 0.01}),
"grain_scale": ("FLOAT", {"default": 1, "min": 0.1, "max": 10, "step": 0.1}),
"grain_sat": ("FLOAT", {"default": 1, "min": 0, "max": 1, "step": 0.01}),
},
"optional": {
}
}

RETURN_TYPES = ("IMAGE",)
RETURN_NAMES = ("image",)
FUNCTION = 'add_grain'
CATEGORY = '😺dzNodes/LayerFilter'

def add_grain(self, image, grain_power, grain_scale, grain_sat):

ret_images = []

for i in range(len(image)):
_canvas = tensor2pil(torch.unsqueeze(image[i], 0)).convert('RGB')
_canvas = image_add_grain(_canvas, grain_scale, grain_power, grain_sat, toe=0, seed=int(time.time()) + i)
ret_images.append(pil2tensor(_canvas))

log(f"{self.NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish')
return (torch.cat(ret_images, dim=0),)

NODE_CLASS_MAPPINGS = {
"LayerFilter: AddGrain": AddGrain
}

NODE_DISPLAY_NAME_MAPPINGS = {
"LayerFilter: AddGrain": "LayerFilter: Add Grain"
import torch
import time
from .imagefunc import log, tensor2pil, image_add_grain, pil2tensor
class AddGrain:
def __init__(self):
self.NODE_NAME = 'AddGrain'
@classmethod
def INPUT_TYPES(self):
return {
"required": {
"image": ("IMAGE", ), #
"grain_power": ("FLOAT", {"default": 0.5, "min": 0, "max": 1, "step": 0.01}),
"grain_scale": ("FLOAT", {"default": 1, "min": 0.1, "max": 10, "step": 0.1}),
"grain_sat": ("FLOAT", {"default": 1, "min": 0, "max": 1, "step": 0.01}),
},
"optional": {
}
}
RETURN_TYPES = ("IMAGE",)
RETURN_NAMES = ("image",)
FUNCTION = 'add_grain'
CATEGORY = '😺dzNodes/LayerFilter'
def add_grain(self, image, grain_power, grain_scale, grain_sat):
ret_images = []
for i in range(len(image)):
_canvas = tensor2pil(torch.unsqueeze(image[i], 0)).convert('RGB')
_canvas = image_add_grain(_canvas, grain_scale, grain_power, grain_sat, toe=0, seed=int(time.time()) + i)
ret_images.append(pil2tensor(_canvas))
log(f"{self.NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish')
return (torch.cat(ret_images, dim=0),)
NODE_CLASS_MAPPINGS = {
"LayerFilter: AddGrain": AddGrain
}
NODE_DISPLAY_NAME_MAPPINGS = {
"LayerFilter: AddGrain": "LayerFilter: Add Grain"
}
68 changes: 34 additions & 34 deletions py/any_rerouter.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
from .imagefunc import AnyType

anything = AnyType('*')

class LS_AnyRerouter():

def __init__(self):
self.NODE_NAME = 'AnyRerouter'


@classmethod
def INPUT_TYPES(self):
return {
"required": {
"any": (anything, {}),
},
"optional": { #
}
}

RETURN_TYPES = (anything,)
RETURN_NAMES = ('any',)
FUNCTION = 'any_rerouter'
CATEGORY = '😺dzNodes/LayerUtility/Data'

def any_rerouter(self, any,):
return (any,)

NODE_CLASS_MAPPINGS = {
"LayerUtility: AnyRerouter": LS_AnyRerouter
}

NODE_DISPLAY_NAME_MAPPINGS = {
"LayerUtility: AnyRerouter": "LayerUtility: Any Rerouter"
from .imagefunc import AnyType
anything = AnyType('*')
class LS_AnyRerouter():
def __init__(self):
self.NODE_NAME = 'AnyRerouter'
@classmethod
def INPUT_TYPES(self):
return {
"required": {
"any": (anything, {}),
},
"optional": { #
}
}
RETURN_TYPES = (anything,)
RETURN_NAMES = ('any',)
FUNCTION = 'any_rerouter'
CATEGORY = '😺dzNodes/LayerUtility/Data'
def any_rerouter(self, any,):
return (any,)
NODE_CLASS_MAPPINGS = {
"LayerUtility: AnyRerouter": LS_AnyRerouter
}
NODE_DISPLAY_NAME_MAPPINGS = {
"LayerUtility: AnyRerouter": "LayerUtility: Any Rerouter"
}
128 changes: 64 additions & 64 deletions py/batch_selector.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,65 +1,65 @@
import torch
from .imagefunc import log, pil2tensor,image2mask, extract_numbers
from PIL import Image



class BatchSelector:

def __init__(self):
self.NODE_NAME = 'BatchSelector'
pass

@classmethod
def INPUT_TYPES(self):

return {
"required": {
"select": ("STRING", {"default": "0,"},),
},
"optional": {
"images": ("IMAGE",), #
"masks": ("MASK",), #
}
}

RETURN_TYPES = ("IMAGE", "MASK",)
RETURN_NAMES = ("image", "mask",)
FUNCTION = 'batch_selector'
CATEGORY = '😺dzNodes/LayerUtility/SystemIO'

def batch_selector(self, select, images=None, masks=None
):
ret_images = []
ret_masks = []
empty_image = pil2tensor(Image.new("RGBA", (64, 64), (0, 0, 0, 0)))
empty_mask = image2mask(Image.new("L", (64, 64), color="black"))

indexs = extract_numbers(select)
for i in indexs:
if images is not None:
if i < len(images):
ret_images.append(images[i].unsqueeze(0))
else:
ret_images.append(images[-1].unsqueeze(0))
if masks is not None:
if i < len(masks):
ret_masks.append(masks[i].unsqueeze(0))
else:
ret_masks.append(masks[-1].unsqueeze(0))

if len(ret_images) == 0:
ret_images.append(empty_image)
if len(ret_masks) == 0:
ret_masks.append(empty_mask)

log(f"{self.NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish')
return (torch.cat(ret_images, dim=0), torch.cat(ret_masks, dim=0),)

NODE_CLASS_MAPPINGS = {
"LayerUtility: BatchSelector": BatchSelector
}

NODE_DISPLAY_NAME_MAPPINGS = {
"LayerUtility: BatchSelector": "LayerUtility: Batch Selector"
import torch
from .imagefunc import log, pil2tensor,image2mask, extract_numbers
from PIL import Image
class BatchSelector:
def __init__(self):
self.NODE_NAME = 'BatchSelector'
pass
@classmethod
def INPUT_TYPES(self):
return {
"required": {
"select": ("STRING", {"default": "0,"},),
},
"optional": {
"images": ("IMAGE",), #
"masks": ("MASK",), #
}
}
RETURN_TYPES = ("IMAGE", "MASK",)
RETURN_NAMES = ("image", "mask",)
FUNCTION = 'batch_selector'
CATEGORY = '😺dzNodes/LayerUtility/SystemIO'
def batch_selector(self, select, images=None, masks=None
):
ret_images = []
ret_masks = []
empty_image = pil2tensor(Image.new("RGBA", (64, 64), (0, 0, 0, 0)))
empty_mask = image2mask(Image.new("L", (64, 64), color="black"))
indexs = extract_numbers(select)
for i in indexs:
if images is not None:
if i < len(images):
ret_images.append(images[i].unsqueeze(0))
else:
ret_images.append(images[-1].unsqueeze(0))
if masks is not None:
if i < len(masks):
ret_masks.append(masks[i].unsqueeze(0))
else:
ret_masks.append(masks[-1].unsqueeze(0))
if len(ret_images) == 0:
ret_images.append(empty_image)
if len(ret_masks) == 0:
ret_masks.append(empty_mask)
log(f"{self.NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish')
return (torch.cat(ret_images, dim=0), torch.cat(ret_masks, dim=0),)
NODE_CLASS_MAPPINGS = {
"LayerUtility: BatchSelector": BatchSelector
}
NODE_DISPLAY_NAME_MAPPINGS = {
"LayerUtility: BatchSelector": "LayerUtility: Batch Selector"
}
Loading