Files
ecalot-ComfyUI-GameDev/grid_slice.py
T
2025-04-16 13:44:06 +10:00

42 lines
1.2 KiB
Python

import torch
class GridSlice:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"image": ("IMAGE",),
"columns": ("INT", {"default": 8, "min": 1, "max": 64}),
"rows": ("INT", {"default": 4, "min": 1, "max": 64}),
"ignore_last_column": ("BOOLEAN", {"default": False}),
}
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "slice_image"
CATEGORY = "Game Development/Image Adjustments"
def slice_image(self, image, columns, rows, ignore_last_column):
_, h, w, _ = image.shape
frame_w = w // columns
frame_h = h // rows
columns_to_slice = (
columns - 1 if ignore_last_column and columns > 1 else columns
)
frames = []
for r in range(rows):
for c in range(columns_to_slice):
y1 = r * frame_h
y2 = (r + 1) * frame_h
x1 = c * frame_w
x2 = (c + 1) * frame_w
frame = image[:, y1:y2, x1:x2, :]
frames.append(frame)
batch_frames = torch.cat(frames, dim=0)
return (batch_frames,)