mirror of
https://git.datalinker.icu/kijai/ComfyUI-KJNodes.git
synced 2025-12-09 21:04:41 +08:00
Add InsertImageBatchByIndexes
This commit is contained in:
parent
ccd89290ed
commit
7e2709425a
72
nodes.py
72
nodes.py
@ -1821,11 +1821,13 @@ class FilterZeroMasksAndCorrespondingImages:
|
|||||||
"MASK",
|
"MASK",
|
||||||
"IMAGE",
|
"IMAGE",
|
||||||
"IMAGE",
|
"IMAGE",
|
||||||
|
"INDEXES"
|
||||||
)
|
)
|
||||||
RETURN_NAMES = (
|
RETURN_NAMES = (
|
||||||
"non_zero_masks_out",
|
"non_zero_masks_out",
|
||||||
"non_zero_mask_images_out",
|
"non_zero_mask_images_out",
|
||||||
"zero_mask_images_out",
|
"zero_mask_images_out",
|
||||||
|
"zero_mask_images_out_indexes"
|
||||||
)
|
)
|
||||||
FUNCTION = "filter"
|
FUNCTION = "filter"
|
||||||
CATEGORY = "KJNodes/masking"
|
CATEGORY = "KJNodes/masking"
|
||||||
@ -1841,6 +1843,7 @@ class FilterZeroMasksAndCorrespondingImages:
|
|||||||
non_zero_masks = []
|
non_zero_masks = []
|
||||||
non_zero_mask_images = []
|
non_zero_mask_images = []
|
||||||
zero_mask_images = []
|
zero_mask_images = []
|
||||||
|
zero_mask_images_indexes = []
|
||||||
|
|
||||||
masks_num = len(masks)
|
masks_num = len(masks)
|
||||||
also_process_images = False
|
also_process_images = False
|
||||||
@ -1859,16 +1862,75 @@ class FilterZeroMasksAndCorrespondingImages:
|
|||||||
non_zero_mask_images.append(original_images[i])
|
non_zero_mask_images.append(original_images[i])
|
||||||
else:
|
else:
|
||||||
zero_mask_images.append(original_images[i])
|
zero_mask_images.append(original_images[i])
|
||||||
|
zero_mask_images_indexes.append(i)
|
||||||
|
|
||||||
non_zero_masks_out = torch.stack(non_zero_masks, dim=0)
|
non_zero_masks_out = torch.stack(non_zero_masks, dim=0)
|
||||||
|
non_zero_mask_images_out = zero_mask_images_out = zero_mask_images_out_indexes = None
|
||||||
|
|
||||||
if also_process_images:
|
if also_process_images:
|
||||||
non_zero_mask_images_out = torch.stack(non_zero_mask_images, dim=0)
|
non_zero_mask_images_out = torch.stack(non_zero_mask_images, dim=0)
|
||||||
zero_mask_images_out = torch.stack(zero_mask_images, dim=0) if len(zero_mask_images) > 0 else None
|
if len(zero_mask_images) > 0:
|
||||||
else:
|
zero_mask_images_out = torch.stack(zero_mask_images, dim=0)
|
||||||
non_zero_mask_images_out = zero_mask_images_out = None
|
zero_mask_images_out_indexes = zero_mask_images_indexes
|
||||||
|
|
||||||
return (non_zero_masks_out, non_zero_mask_images_out, zero_mask_images_out)
|
return (non_zero_masks_out, non_zero_mask_images_out, zero_mask_images_out, zero_mask_images_out_indexes)
|
||||||
|
|
||||||
|
class InsertImageBatchByIndexes:
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(cls):
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"images": ("IMAGE",),
|
||||||
|
"images_to_insert": ("IMAGE",),
|
||||||
|
"insert_indexes": ("INDEXES",),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = (
|
||||||
|
"IMAGE",
|
||||||
|
)
|
||||||
|
RETURN_NAMES = (
|
||||||
|
"images_after_insert",
|
||||||
|
)
|
||||||
|
FUNCTION = "insert"
|
||||||
|
CATEGORY = "KJNodes"
|
||||||
|
|
||||||
|
def insert(self, images, images_to_insert, insert_indexes):
|
||||||
|
"""_summary_
|
||||||
|
|
||||||
|
Args:
|
||||||
|
images (_type_): _description_
|
||||||
|
images_to_insert (_type_): _description_
|
||||||
|
insert_indexes (_type_): _description_
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
_type_: _description_
|
||||||
|
"""
|
||||||
|
|
||||||
|
images_after_insert = images
|
||||||
|
|
||||||
|
if images_to_insert is not None and insert_indexes is not None:
|
||||||
|
images_to_insert_num = len(images_to_insert)
|
||||||
|
insert_indexes_num = len(insert_indexes)
|
||||||
|
if images_to_insert_num == insert_indexes_num:
|
||||||
|
images_after_insert = []
|
||||||
|
|
||||||
|
i_images = 0
|
||||||
|
for i in range(len(images) + images_to_insert_num):
|
||||||
|
if i in insert_indexes:
|
||||||
|
images_after_insert.append(images_to_insert[insert_indexes.index(i)])
|
||||||
|
else:
|
||||||
|
images_after_insert.append(images[i_images])
|
||||||
|
i_images += 1
|
||||||
|
|
||||||
|
images_after_insert = torch.stack(images_after_insert, dim=0)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(f"[WARNING] skip this node, due to number of images_to_insert ({images_to_insert_num}) is not equal to number of insert_indexes ({insert_indexes_num})")
|
||||||
|
|
||||||
|
|
||||||
|
return (images_after_insert, )
|
||||||
|
|
||||||
def bbox_to_region(bbox, target_size=None):
|
def bbox_to_region(bbox, target_size=None):
|
||||||
bbox = bbox_check(bbox, target_size)
|
bbox = bbox_check(bbox, target_size)
|
||||||
@ -3038,6 +3100,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"BatchCropFromMask": BatchCropFromMask,
|
"BatchCropFromMask": BatchCropFromMask,
|
||||||
"BatchCropFromMaskAdvanced": BatchCropFromMaskAdvanced,
|
"BatchCropFromMaskAdvanced": BatchCropFromMaskAdvanced,
|
||||||
"FilterZeroMasksAndCorrespondingImages": FilterZeroMasksAndCorrespondingImages,
|
"FilterZeroMasksAndCorrespondingImages": FilterZeroMasksAndCorrespondingImages,
|
||||||
|
"InsertImageBatchByIndexes": InsertImageBatchByIndexes,
|
||||||
"BatchUncrop": BatchUncrop,
|
"BatchUncrop": BatchUncrop,
|
||||||
"BatchUncropAdvanced": BatchUncropAdvanced,
|
"BatchUncropAdvanced": BatchUncropAdvanced,
|
||||||
"BatchCLIPSeg": BatchCLIPSeg,
|
"BatchCLIPSeg": BatchCLIPSeg,
|
||||||
@ -3094,6 +3157,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"BatchCropFromMask": "BatchCropFromMask",
|
"BatchCropFromMask": "BatchCropFromMask",
|
||||||
"BatchCropFromMaskAdvanced": "BatchCropFromMaskAdvanced",
|
"BatchCropFromMaskAdvanced": "BatchCropFromMaskAdvanced",
|
||||||
"FilterZeroMasksAndCorrespondingImages": "FilterZeroMasksAndCorrespondingImages",
|
"FilterZeroMasksAndCorrespondingImages": "FilterZeroMasksAndCorrespondingImages",
|
||||||
|
"InsertImageBatchByIndexes": "InsertImageBatchByIndexes",
|
||||||
"BatchUncrop": "BatchUncrop",
|
"BatchUncrop": "BatchUncrop",
|
||||||
"BatchUncropAdvanced": "BatchUncropAdvanced",
|
"BatchUncropAdvanced": "BatchUncropAdvanced",
|
||||||
"BatchCLIPSeg": "BatchCLIPSeg",
|
"BatchCLIPSeg": "BatchCLIPSeg",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user