From 50617da3e04e068280e22a306c63ef21ef778cfa Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 15 May 2025 17:58:13 +1000 Subject: [PATCH] masked selection --- README.md | 29 +++++++++++++++++++++-------- __init__.py | 2 +- image_filter.py | 5 +++-- images/maskedsection.png | Bin 0 -> 50419 bytes js/image_filter.js | 2 +- pyproject.toml | 2 +- 6 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 images/maskedsection.png diff --git a/README.md b/README.md index 5fbf854..ed39410 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ If you prefer trying a workflow to reading docs, use of the nodes is illustrated Seahorse +## New in 1.6 ## + +- `Masked Section` node to crop images to just the masked area + ## New in 1.5 ## - Floating window for extras and tips @@ -191,6 +195,13 @@ If you use the optional 'tip' input, the contents will be displayed under the ex ## Helper Nodes +### Masked Section + +`Masked Section` takes a mask and a (batch of) images and outputs the images cropped to the bounding box of the mask (with a minimum size). +Here's how you might use it to preview the parts of the image that were changed in img2img (also using `Pick from List` and `Image List from Batch` described below) + +![masked preview](images/maskedsection.png) + ### String handling - `Split String by Commas` allows you to split a text string into up to five pieces, splitting on `,`, `|`, or `^`. It also strips whitespace, so that the strings can be easily parsed, especially by... @@ -204,9 +215,17 @@ Together, these nodes allow you to specify lots of information in the `extras` f There is also a sixth output which is a list of all the strings. -### Pick from List +### List and Batch Handling -The `Image Filter` node outputs a string, `indexes`, which is a comma separated list of the indexes (0 based) of the images selected. Connect this to a `Pick from List` node, and connect a list of anything to the `anything` input, and the `Pick from List` node will output a list corresponding to the selected images. +**When working with multiple images** - `Image Filter` expects a batch, `Mask Image Filter` and `Text Image Filter` need a list. + +So if you generate a load of images using lists of, for instance, prompts, to feed them into `Image Filter` you will want to combine them with the helper node `Batch from Image List`. + +If you generate a batch of images and want to use the `Mask Image Filter` or `Text Image Filter`, which only handle a single image, you will want to do the opposite - convert the batch to a list with `Image List From Batch`. Then the images will be shown sequentially. + +The `Image Filter` node outputs a string, `indexes`, which is a comma separated list of the indexes +(0 based by default, but you can pick a different start value if you need to with `pick_list_start`) of the images selected. +Connect this to a `Pick from List` node, and connect a list of anything to the `anything` input, and the `Pick from List` node will output a list corresponding to the selected images. For instance, if you create a set of images using a list of prompts, this can be used to select the prompts that correspond to the selected images. But you might well want to batch the images if you did use lists - see below. @@ -214,13 +233,7 @@ So something like this: ![image](images/fromlist.png) ---- -### Batch <-> List - -If you are using lists, each node will run once for each list. This means that normally you will want a single batch of images for the `Image Filter` (so if you generate a load of images using lists of, for instance, prompts, you will want to combine them with the helper node `Batch from Image List`) - -If you generate a batch of images and want to use the `Mask Image Filter` or `Text Image Filter`, which only show a single image, you will want to do the opposite - convert the batch to a list with `Image List From Batch`. Then the images will be shown sequentially. --- diff --git a/__init__.py b/__init__.py index 496842e..8cddb7f 100644 --- a/__init__.py +++ b/__init__.py @@ -10,7 +10,7 @@ from .list_utility_nodes import PickFromList, BatchFromImageList, ImageListFromB from .string_utility_nodes import SplitByCommas, StringToFloat, StringToInt from .mask_utility_nodes import MaskedSection -VERSION = "1.5.2" +VERSION = "1.6" WEB_DIRECTORY = "./js" NODE_CLASS_MAPPINGS= { diff --git a/image_filter.py b/image_filter.py index 10eb39f..1c6daa0 100644 --- a/image_filter.py +++ b/image_filter.py @@ -37,6 +37,7 @@ class ImageFilter(PreviewImage): "extra1" : ("STRING", {"default":""}), "extra2" : ("STRING", {"default":""}), "extra3" : ("STRING", {"default":""}), + "pick_list_start" : ("INT", {"default":0, "tooltip":"The number used in pick_list for the first image"}), "pick_list" : ("STRING", {"default":"", "tooltip":"If a comma separated list of integers is provided, the images with these indices will be selected automatically."}), "video_frames" : ("INT", {"default":1, "min":1, "tooltip": "treat each block of n images as a video"}), }, @@ -47,7 +48,7 @@ class ImageFilter(PreviewImage): def IS_CHANGED(cls, pick_list, **kwargs): return pick_list or float("NaN") - def func(self, images, timeout, ontimeout, uid, node_identifier, tip="", extra1="", extra2="", extra3="", latents=None, masks=None, pick_list:str="", video_frames:int=1, **kwargs): + def func(self, images, timeout, ontimeout, uid, node_identifier, tip="", extra1="", extra2="", extra3="", latents=None, masks=None, pick_list_start:int=0, pick_list:str="", video_frames:int=1, **kwargs): e1, e2, e3 = extra1, extra2, extra3 B = images.shape[0] @@ -84,7 +85,7 @@ class ImageFilter(PreviewImage): latents = {"samples": torch.stack(list(latents['samples'][int(i)] for i in images_to_return))} if latents is not None else None masks = torch.stack(list(masks[int(i)] for i in images_to_return)) if masks is not None else None - return (images, latents, masks, e1, e2, e3, ",".join(str(x) for x in images_to_return)) + return (images, latents, masks, e1, e2, e3, ",".join(str(x+pick_list_start) for x in images_to_return)) class TextImageFilterWithExtras(PreviewImage): RETURN_TYPES = ("IMAGE","STRING","STRING","STRING","STRING") diff --git a/images/maskedsection.png b/images/maskedsection.png new file mode 100644 index 0000000000000000000000000000000000000000..c19051738d25c0efdd558ae8d6dd1677e9cdc4ee GIT binary patch literal 50419 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 literal 0 HcmV?d00001 diff --git a/js/image_filter.js b/js/image_filter.js index dcc0eaf..4411e1b 100644 --- a/js/image_filter.js +++ b/js/image_filter.js @@ -13,7 +13,7 @@ app.registerExtension({ settings: [ { id: "Image Filter. Image Filter", - name: "Version 1.5.2", + name: "Version 1.6", type: () => { const x = document.createElement('span') const a = document.createElement('a') diff --git a/pyproject.toml b/pyproject.toml index d643544..80a471b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "cg-image-filter" description = "A set of custom nodes that pause a workflow while you select images, add masks, or edit text." -version = "1.5.2" +version = "1.6" license = { file = "LICENSE" } [project.urls]