You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
import nodes |
|
MAX_RESOLUTION = nodes.MAX_RESOLUTION |
|
|
|
class ImageCrop: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": { "image": ("IMAGE",), |
|
"width": ("INT", {"default": 512, "min": 1, "max": MAX_RESOLUTION, "step": 1}), |
|
"height": ("INT", {"default": 512, "min": 1, "max": MAX_RESOLUTION, "step": 1}), |
|
"x": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 1}), |
|
"y": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 1}), |
|
}} |
|
RETURN_TYPES = ("IMAGE",) |
|
FUNCTION = "crop" |
|
|
|
CATEGORY = "image/transform" |
|
|
|
def crop(self, image, width, height, x, y): |
|
x = min(x, image.shape[2] - 1) |
|
y = min(y, image.shape[1] - 1) |
|
to_x = width + x |
|
to_y = height + y |
|
img = image[:,y:to_y, x:to_x, :] |
|
return (img,) |
|
|
|
class RepeatImageBatch: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": { "image": ("IMAGE",), |
|
"amount": ("INT", {"default": 1, "min": 1, "max": 64}), |
|
}} |
|
RETURN_TYPES = ("IMAGE",) |
|
FUNCTION = "repeat" |
|
|
|
CATEGORY = "image/batch" |
|
|
|
def repeat(self, image, amount): |
|
s = image.repeat((amount, 1,1,1)) |
|
return (s,) |
|
|
|
NODE_CLASS_MAPPINGS = { |
|
"ImageCrop": ImageCrop, |
|
"RepeatImageBatch": RepeatImageBatch, |
|
}
|
|
|