Spaces:
Paused
Paused
| import nodes | |
| MAX_RESOLUTION = nodes.MAX_RESOLUTION | |
| class ImageCrop: | |
| 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: | |
| 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, | |
| } | |